Merge branch 'szzh' into guange_dev

This commit is contained in:
sw 2015-03-21 14:20:41 +08:00
commit 52825bb850
27 changed files with 201 additions and 116 deletions

View File

@ -759,7 +759,7 @@ class CoursesController < ApplicationController
def homework def homework
if @course.is_public != 0 || User.current.member_of_course?(@course) || User.current.admin? if @course.is_public != 0 || User.current.member_of_course?(@course) || User.current.admin?
@offset, @limit = api_offset_and_limit({:limit => 10}) @offset, @limit = api_offset_and_limit({:limit => 10})
@bids = @course.homeworks.order('deadline DESC') @bids = @course.homeworks.order('deadline ASC')
@bids = @bids.like(params[:name]) if params[:name].present? @bids = @bids.like(params[:name]) if params[:name].present?
@bid_count = @bids.count @bid_count = @bids.count
@bid_pages = Paginator.new @bid_count, @limit, params['page'] @bid_pages = Paginator.new @bid_count, @limit, params['page']

View File

@ -26,10 +26,12 @@ class DiscussDemosController < ApplicationController
def destroy def destroy
asset = Kindeditor::Asset.find_by_owner_id(params[:id]) asset = Kindeditor::Asset.find_by_owner_id(params[:id])
filepath = File.join(Rails.root,"public","files","uploads", if !asset.nil?
asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s, filepath = File.join(Rails.root,"public","files","uploads",
asset[:asset].to_s) asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s,
File.delete(filepath) if File.exist?filepath asset[:asset].to_s)
File.delete(filepath) if File.exist?filepath
end
DiscussDemo.destroy(params[:id]) DiscussDemo.destroy(params[:id])
redirect_to :controller=> 'discuss_demos',:action => 'index' redirect_to :controller=> 'discuss_demos',:action => 'index'
end end

View File

@ -162,7 +162,8 @@ class IssuesController < ApplicationController
respond_to do |format| respond_to do |format|
format.html { format.html {
render_attachment_warning_if_needed(@issue) render_attachment_warning_if_needed(@issue)
flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("#{@issue.subject}", issue_path(@issue), :title => @issue.subject)) flash[:notice] = l(:label_successful_create)
#flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("#{@issue.subject}", issue_path(@issue), :title => @issue.subject))
#flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("##{@issue.id}", issue_path(@issue), :title => @issue.subject)) #flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("##{@issue.id}", issue_path(@issue), :title => @issue.subject))
if params[:continue] if params[:continue]
attrs = {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} attrs = {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?}

View File

@ -43,7 +43,7 @@ module WatchersHelper
) )
method = watched ? 'delete' : 'post' method = watched ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method, :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 22px; line-height: 21px;padding-top:1px; background: none repeat scroll 0% 0% #64BDD9; TES" link_to text, url, :remote => true, :method => method, :class => css
end end
############## added by linchun ############## added by linchun
@ -278,11 +278,48 @@ module WatchersHelper
) )
method = applied ? 'delete' : 'post' method = applied ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method ,:style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 21px; line-height: 22px;padding-top:1px; background: none repeat scroll 0% 0% #64BDD9; TES" link_to text, url, :remote => true, :method => method , :class => css
end end
def exit_project_link(project) def exit_project_link(project)
link_to(l(:label_exit_project),exit_cur_project_path(project.id), link_to(l(:label_exit_project),exit_cur_project_path(project.id),
:remote => true, :confirm => l(:lable_sure_exit_project), :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 21px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES;padding-top:1px;" ) :remote => true, :confirm => l(:lable_sure_exit_project),
:style => "color: #fff; display:block;font-size:12px; padding: 0px 5px; margin-right: 10px; height: 20px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES;padding-top:1px;" )
end
#项目关注、取消关注
#REDO:项目样式确定后方法需要对CSS变量进行改进
def watcher_link_for_project(objects, user, options=[])
return '' unless user && user.logged?
objects = Array.wrap(objects)
watched = objects.any? {|object| object.watched_by?(user)}
@watch_flag = objects.first.instance_of?(Project)
id = watcher_css(objects)
text = @watch_flag ?
(watched ? l(:button_unfollow) : l(:label_button_following)) : (watched ? l(:button_unwatch) : l(:label_button_following))
url = watch_path(:object_type => objects.first.class.to_s.underscore,
:object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort))
method = watched ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method,
:class => "project_watch_new" ,:id=>id
end
#申请加入项目
def join_in_project_link(project, user, options=[])
return '' unless user && user.logged?
applied = project.applied_projects.find_by_user_id(user.id)
text = applied ? l(:label_unapply_project) : l(:label_apply_project)
@applied_flag = project.instance_of?(Project)
if applied
appliedid = applied.id
end
id = applied_css(project)
url = appliedproject_path(
:id=>appliedid,
:user_id => user.id,
:project_id => project.id)
method = applied ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method , :class => "project_watch_new",:id => id
end end
end end

View File

@ -1,5 +1,14 @@
<% selector = ".#{applied_css(@project)}" %> <% selector = ".#{applied_css(@project)}" %>
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript applied_link(@project, User.current) %>")}); <% id_selector = "#{applied_css(@project)}" %>
if($("<%= selector %>").get(0) == undefined)
{
$("#<%= id_selector %>").each(function(){$(this).replaceWith("<%= escape_javascript join_in_project_link(@project, User.current) %>")});
}
else
{
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript applied_link(@project, User.current) %>")});
}
if (window.Messenger) { if (window.Messenger) {
Messenger.options = { Messenger.options = {
extraClasses: 'messenger-fixed messenger-on-bottom messenger-on-right', extraClasses: 'messenger-fixed messenger-on-bottom messenger-on-right',

View File

@ -1,6 +1,6 @@
<span id="attachments_fields" xmlns="http://www.w3.org/1999/html"> <span id="attachments_fields" xmlns="http://www.w3.org/1999/html">
<% if defined?(container) && container && container.saved_attachments %> <% if defined?(container) && container && container.saved_attachments %>
<% container.saved_attachments.each_with_index do |attachment, i| %> <% container.attachments.each_with_index do |attachment, i| %>
<span id="attachments_p<%= i %>" class="attachment"> <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}][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;") %> <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
@ -60,7 +60,11 @@
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_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, :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
:upload_path => uploads_path(:format => 'js',:project =>project), :upload_path => uploads_path(:format => 'js',:project =>project),
:description_placeholder => l(:label_optional_description) :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),
:delete_all_files => l(:text_are_you_sure_all)
} %> } %>
<span id="upload_file_count"> <span id="upload_file_count">
<%= l(:label_no_file_uploaded)%> <%= l(:label_no_file_uploaded)%>

View File

@ -50,7 +50,11 @@
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_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, :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
:upload_path => uploads_path(:format => 'js'), :upload_path => uploads_path(:format => 'js'),
:description_placeholder => l(:label_optional_description) :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),
:delete_all_files => l(:text_are_you_sure_all)
} %> } %>
<span id="upload_file_count"><%= l(:label_no_file_uploaded)%></span> <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) %>) (<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)

View File

@ -7,9 +7,9 @@
<% end%> <% end%>
<span title="<%= attachment.filename%>" id = "attachment_"> <span title="<%= attachment.filename%>" id = "attachment_">
<% if options[:length] %> <% if options[:length] %>
<%= link_to_attachment attachment, :class => 'icon icon-attachment', :download => true,:length => options[:length] -%> <%= link_to_short_attachment attachment, :class => 'icon icon-attachment', :download => true,:length => options[:length] -%>
<% else %> <% else %>
<%= link_to_attachment attachment, :class => 'icon icon-attachment', :download => true -%> <%= link_to_short_attachment attachment, :class => 'icon icon-attachment', :download => true -%>
<% end %> <% end %>
</span> </span>
<%if is_float%> <%if is_float%>

View File

@ -15,7 +15,7 @@
<tr> <tr>
<td colspan="2" width="580px" ><p class="font_description"> <td colspan="2" width="580px" ><p class="font_description">
<% unless user.memberships.empty? %> <% unless user.memberships.empty? %>
<%= l(:label_contribute_to, :project_count => "#{user.memberships.count}") %> <%= l(:label_contribute_to, :count => "#{user.memberships.count}") %>
<% for member in user.memberships %> <% for member in user.memberships %>
<%= link_to_project(member.project) %><%= (user.memberships.last == member) ? '' : '' %> <%= link_to_project(member.project) %><%= (user.memberships.last == member) ? '' : '' %>
<% end %> <% end %>

View File

@ -34,7 +34,11 @@
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_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, :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
:upload_path => uploads_path(:format => 'js'), :upload_path => uploads_path(:format => 'js'),
:description_placeholder => l(:label_optional_description) :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),
:delete_all_files => l(:text_are_you_sure_all)
} %> } %>
<!--<input type="submit" name="" value="上传文件" class="f_l ml10" style="width:80px; height:26px;">--> <!--<input type="submit" name="" value="上传文件" class="f_l ml10" style="width:80px; height:26px;">-->
<label class="f_l ml10 c_grey" style=" margin-top: 3px;"> <label class="f_l ml10 c_grey" style=" margin-top: 3px;">

View File

@ -14,9 +14,10 @@
</p> </p>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="for_img_thumbnails">
<% curse_attachments.each do |file| %> <% curse_attachments.each do |file| %>
<div class="re_con_box"> <div class="re_con_box">
<div class=" "> <div class="">
<%= link_to_attachment file, :download => true,:text => truncate(file.filename,length: 35, omission: '...'), :title => file.filename+"\n"+file.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;",:class => "c_dblue f_14 f_b f_l" %> <%= link_to_attachment file, :download => true,:text => truncate(file.filename,length: 35, omission: '...'), :title => file.filename+"\n"+file.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;",:class => "c_dblue f_14 f_b f_l" %>
<% if User.current.logged? %> <% if User.current.logged? %>
<% if (is_course_teacher(User.current,@course) || file.author_id == User.current.id) && course_contains_attachment?(@course,file) %> <% if (is_course_teacher(User.current,@course) || file.author_id == User.current.id) && course_contains_attachment?(@course,file) %>
@ -50,6 +51,7 @@
<div class="cl"></div> <div class="cl"></div>
</div><!---re_con_box end--> </div><!---re_con_box end-->
<% end %> <% end %>
</div>
<ul class="wlist"> <ul class="wlist">
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => @is_remote, :flag => true%> <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => @is_remote, :flag => true%>
</ul> </ul>

View File

@ -12,7 +12,7 @@
<% end %> <% end %>
<%= watcher_link(@issue, User.current) %>
<%= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %> <%= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %>
<%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del' if User.current.allowed_to?(:delete_issues, @project) %> <%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del' if User.current.allowed_to?(:delete_issues, @project) %>
</div> </div>

View File

@ -89,7 +89,7 @@
closeBtn.bind("click",function(){ closeBtn.bind("click",function(){
sideContent.animate({width: '0px'},"fast"); sideContent.animate({width: '0px'},"fast");
show_btn.stop(true, true).delay(300).animate({ width: '25px'},"fast"); show_btn.stop(true, true).delay(300).animate({ width: '25px'},"fast");
cookiesave('minStatue','false','','',''); cookiesave('minStatue','true','','','');
}); });
//show??? //show???
show_btn.bind("click",function() { show_btn.bind("click",function() {

View File

@ -1,11 +1,11 @@
<div class="pr_info_join fl"> <div class="pr_info_join fl">
<!--关注项目--> <!--关注项目-->
<% if ( !(User.current.member_of? @project) && User.current.login?) %> <!--added by linchun--> <% if ( !(User.current.member_of? @project) && User.current.login?) %> <!--added by linchun-->
<span><%= watcher_link(@project, User.current) %></span> <span><%= watcher_link_for_project(@project, User.current) %></span>
<% end %> <% end %>
<!--加入项目 --> <!--加入项目 -->
<% if ( !(User.current.member_of? @project) && User.current.login?) %> <% if ( !(User.current.member_of? @project) && User.current.login?) %>
<%= applied_link(@project, User.current) %> <%= join_in_project_link(@project, User.current) %>
<% end %> <% end %>
<!--退出项目--> <!--退出项目-->
<% if ((User.current.member_of? @project) && <% if ((User.current.member_of? @project) &&

View File

@ -153,7 +153,7 @@
<span class="subnav_num">(<%= @project.issues.count %>)</span><span> <span class="subnav_num">(<%= @project.issues.count %>)</span><span>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %></span> <%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :style => "font-size:12px !important;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %></span>
<% end %> <% end %>
</div> </div>
<% end %> <% end %>
@ -164,7 +164,7 @@
<span class="subnav_num">(<%= @project.boards.first.topics.count %>)</span> <span class="subnav_num">(<%= @project.boards.first.topics.count %>)</span>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:project_module_boards_post), project_boards_path(@project, :flag => true), :layout => 'base_projects',:style => "font-size:12px;color:#fff; padding:0px 3px 3px 3px;height:16px;margin-top:5px;background:#28be6c;float:right;line-height:20px;" %> <%= link_to "+"+l(:project_module_boards_post), project_boards_path(@project, :flag => true), :layout => 'base_projects',:style => "font-size:12px !important;color:#fff; padding:0px 3px 3px 3px;height:16px;margin-top:5px;background:#28be6c;float:right;line-height:20px;" %>
<% end %> <% end %>
</div> </div>
<% end%> <% end%>
@ -175,7 +175,7 @@
<span class="subnav_num">(<%= attaments_num %>)</span> <span class="subnav_num">(<%= attaments_num %>)</span>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_upload_files), project_files_path(@project,:flag => true),:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %> <%= link_to "+"+l(:label_upload_files), project_files_path(@project,:flag => true),:style => "font-size:12px !important;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %>
<% end %> <% end %>
</div> </div>
<% end%> <% end%>

View File

@ -1,7 +1,7 @@
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>"); $("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_memo_create_succ)}) %>"); $('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_memo_create_succ)}) %>");
showModal('ajax-modal', '250px'); showModal('ajax-modal', '250px');
$('#ajax-modal').css('height','111px'); //$('#ajax-modal').css('height','111px');
$('#ajax-modal').siblings().remove(); $('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" + $('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
"<a href='#' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>"); "<a href='#' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");

View File

@ -1,7 +1,7 @@
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>"); $("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_poll_republish_success)}) %>"); $('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_poll_republish_success)}) %>");
showModal('ajax-modal', '250px'); showModal('ajax-modal', '250px');
$('#ajax-modal').css('height','80px'); //$('#ajax-modal').css('height','80px');
$('#ajax-modal').siblings().remove(); $('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" + $('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
"<a href='#' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>"); "<a href='#' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");

View File

@ -1,68 +1,68 @@
<script> <script>
function verifyAddress() { function verifyAddress() {
var email = $.trim($('#mail').val()); var email = $.trim($('#mail').val());
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(email == "") if(email == "")
{ {
$("#valid_email").html("电子邮件不能为空"); $("#valid_email").html("电子邮件不能为空");
} }
else if (filter.test(email)) { else if (filter.test(email)) {
$("#valid_email").html(""); $("#valid_email").html("");
return true; return true;
} }
else else
{ {
$("#valid_email").html("您所填写的电子邮件格式不正确"); $("#valid_email").html("您输入的邮箱格式不正确!");
} }
return false; return false;
} }
function senderEmail(obj) function senderEmail(obj)
{ {
if(verifyAddress()) if(verifyAddress())
{ {
obj.parent().submit(); obj.parent().submit();
} }
} }
// if (filter.test(email)&& !(email.value == null)) return true; // if (filter.test(email)&& !(email.value == null)) return true;
// else // else
// { // {
// document.getElementById('valid_email').innerHTML = "您所填写的电子邮件格式不正确"; // document.getElementById('valid_email').innerHTML = "您所填写的电子邮件格式不正确";
// document.getElementById('valid_email').style.color = "#FF0000"; // document.getElementById('valid_email').style.color = "#FF0000";
// return false; // return false;
// } // }
// //
// } // }
</script> </script>
<div class="project_r_h"> <div class="project_r_h">
<h2 class="project_h2"><%= l(:label_invite_join)%></h2> <h2 class="project_h2"><%= l(:label_invite_join)%></h2>
</div> </div>
<div class="floatbox" style="margin:130px;"> <div class="floatbox" style="margin:130px;">
<div > <div >
<a href="#" class="box_close"></a> <a href="#" class="box_close"></a>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="box_main"> <div class="box_main">
<div style="padding-left: 20px;"> <div style="padding-left: 20px;">
<h3 class="box_h3"><%= l(:label_invite_new_user)%></h3> <h3 class="box_h3"><%= l(:label_invite_new_user)%></h3>
<p class="box_p"> <p class="box_p">
<%= l(:label_invite_email_tips)%> <%= l(:label_invite_email_tips)%>
</p> </p>
<div id="is_registed"> <div id="is_registed">
<%= render :partial => 'regested', locals: { :isregisted => false} %> <%= render :partial => 'regested', locals: { :isregisted => false} %>
</div> </div>
<%= form_tag('send_mail_to_member', :controller => 'projects',:action => 'send_mail_to_member', method: 'get') do %> <%= form_tag('send_mail_to_member', :controller => 'projects',:action => 'send_mail_to_member', method: 'get') do %>
<span id="valid_email" style="color: #FF0000;"></span> <span id="valid_email" style="color: #FF0000;"></span>
<%= text_field_tag 'mail', '', :class => "fb_item fl", :placeholder => l(:label_input_email), :onkeyup => "verifyAddress();" %> <%= text_field_tag 'mail', '', :class => "fb_item fl", :placeholder => l(:label_input_email), :onblur => "verifyAddress();" %>
<div class="cl"></div> <div class="cl"></div>
<div class="cl"></div> <div class="cl"></div>
<a href="#" class="btn_free" onclick="senderEmail($(this));"> <a href="#" class="btn_free" onclick="senderEmail($(this));">
<%= l(:label_send_email)%> <%= l(:label_send_email)%>
</a> </a>
<%#= submit_tag '免费发送', :style => "display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;" %> <%#= submit_tag '免费发送', :style => "display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;" %>
<% end %> <% end %>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,5 +1,7 @@
<!-- new repository new by xianbo--> <!-- new repository new by xianbo-->
<h3><%= l(:label_repository_new_repos) %></h3> <div class="project_r_h">
<h2 class="project_h2"><%= l(:label_repository_new_repos) %></h2>
</div>
<%= labelled_form_for :repository, @repository, :url =>project_repositories_path(@project),:html => {:id => 'repository-form'} do |f| %> <%= labelled_form_for :repository, @repository, :url =>project_repositories_path(@project),:html => {:id => 'repository-form'} do |f| %>
<%= render :partial => 'form_create', :locals => {:f => f} %> <%= render :partial => 'form_create', :locals => {:f => f} %>

View File

@ -34,7 +34,12 @@
<!--项目暂时单独出来,后面重构--> <!--项目暂时单独出来,后面重构-->
<% if object_flag == '2' %> <% if object_flag == '2' %>
<span class="re_tag f_l"> <span class="re_tag f_l">
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %></span> <%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
<% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %>
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
:taggable_id => obj.id, :taggable_type => object_flag %>
<% end %>
</span>
<% else %> <% else %>
<div id="tag"> <div id="tag">
<span class="tag_show"> <span class="tag_show">
@ -47,7 +52,7 @@
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
:taggable_id => obj.id, :taggable_type => object_flag %> :taggable_id => obj.id, :taggable_type => object_flag %>
</span> </span>
<% end %> <% end %>
<% when '3' %> <% when '3' %>
<% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %> <% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %>
<span class='del'> <span class='del'>

View File

@ -1,2 +1,11 @@
<% selector = ".#{watcher_css(watched)}" %> <% selector = ".#{watcher_css(watched)}" %>
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")}); <% id_selector = "#{watcher_css(watched)}" %>
if($("<%= selector %>").get(0) == undefined)
{
$("#<%= id_selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link_for_project(watched, user) %>")});
}
else
{
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")});
}

View File

@ -33,7 +33,7 @@ en:
# #
label_project_id: "Projcet ID:" label_project_id: "Projcet ID:"
label_apply_project: Apply to Join label_apply_project: "+Apply to Join"
label_exit_project: Exit label_exit_project: Exit
label_apply_project_waiting: "Application has been processed, please wait for administrator review." label_apply_project_waiting: "Application has been processed, please wait for administrator review."
label_unapply_project: Cancel the application label_unapply_project: Cancel the application
@ -136,6 +136,7 @@ en:
# 项目托管平台 # 项目托管平台
# #
# 问题跟踪 # 问题跟踪
label_successful_create: Successfully created
# #

View File

@ -10,9 +10,8 @@ zh:
# #
# 公共类 # 公共类
# #
label_apply_project: 申请加入 label_project_new: "新建项目"
label_project_new: 新建项目 label_join_project: "加入项目"
label_join_project: 加入项目
# #
@ -36,7 +35,8 @@ zh:
# #
label_project_id: "项目ID:" label_project_id: "项目ID:"
label_apply_project: 申请加入 label_apply_project: "+申请加入"
label_button_following: "+关注"
label_exit_project: 退出项目 label_exit_project: 退出项目
label_apply_project_waiting: 已处理申请,请等待管理员审核 label_apply_project_waiting: 已处理申请,请等待管理员审核
label_unapply_project: 取消申请 label_unapply_project: 取消申请
@ -135,11 +135,12 @@ zh:
label_optional_description: 可选的描述 label_optional_description: 可选的描述
text_are_you_sure_all: 您确定要删除所有文件吗
# #
# 项目托管平台 # 项目托管平台
# #
# 问题跟踪 # 问题跟踪
label_successful_create: 创建成功
# #
@ -194,7 +195,7 @@ zh:
label_invite_join: 邀请加入 label_invite_join: 邀请加入
label_invite_email_tips: 输入好友邮箱地址Trustie会自动为该邮箱注册用户 label_invite_email_tips: 输入好友邮箱地址Trustie会自动为该邮箱注册用户
notice_registed_success: 您输入的邮箱为空或者该邮箱已被注册! notice_registed_success: 您输入的邮箱为空或者该邮箱已被注册!
label_email_format_error: 所填写的电子邮件格式不正确 label_email_format_error: 输入的邮箱格式不正确!
label_user_role_null: 用户和角色不能留空! label_user_role_null: 用户和角色不能留空!
label_send_email: 免费发送 label_send_email: 免费发送
label_input_email: 请输入邮箱地址 label_input_email: 请输入邮箱地址

View File

@ -629,10 +629,15 @@ function img_thumbnails() {
$('.thumbnails a').colorbox({rel:'nofollow'}); $('.thumbnails a').colorbox({rel:'nofollow'});
$('.attachments').find('a').each(function(index, element) { $('.attachments').find('a').each(function(index, element) {
var href_value = $(element).attr('href'); var href_value = $(element).attr('href');
if (/\.(jpg|png|gif|bmp)$/.test(href_value)) { if (/\.(jpg|png|gif|bmp|jpeg|PNG|BMP|GIF|JPG|JPEG)$/.test(href_value)) {
$(element).colorbox({rel:'nofollow'}); $(element).colorbox({rel:'nofollow'});
} }
});
$('.for_img_thumbnails').find('a').each(function(index, element) {
var href_value = $(element).attr('href');
if (/\.(jpg|png|gif|bmp|jpeg|PNG|BMP|GIF|JPG|JPEG)$/.test(href_value)) {
$(element).colorbox({rel:'nofollow'});
}
}); });
} }
$(document).ready(img_thumbnails); $(document).ready(img_thumbnails);

View File

@ -22,10 +22,10 @@ function addFile(inputEl, file, eagerUpload) {
fileSpan.append( fileSpan.append(
$('<input>', { 'type': 'text', 'class': 'filename readonly', 'name': 'attachments[' + attachmentId + '][filename]', 'readonly': 'readonly'} ).val(file.name), $('<input>', { 'type': 'text', 'class': 'filename readonly', 'name': 'attachments[' + attachmentId + '][filename]', 'readonly': 'readonly'} ).val(file.name),
$('<input>', { 'type': 'text', 'class': 'description', 'name': 'attachments[' + attachmentId + '][description]', 'maxlength': 254, 'placeholder': $(inputEl).data('description-placeholder') } ).toggle(!eagerUpload), $('<input>', { 'type': 'text', 'class': 'description', 'name': 'attachments[' + attachmentId + '][description]', 'maxlength': 254, 'placeholder': $(inputEl).data('descriptionPlaceholder') } ).toggle(!eagerUpload),
$('<span >公开:</span>').attr({ 'class': 'ispublic-label' }) , $('<span >'+$(inputEl).data('fieldIsPublic')+':</span>').attr({ 'class': 'ispublic-label' }) ,
$('<input>', { 'type': 'checkbox', 'class': 'is_public_checkbox','value':1, 'name': 'attachments[' + attachmentId + '][is_public_checkbox]', checked:'checked' } ).toggle(!eagerUpload), $('<input>', { 'type': 'checkbox', 'class': 'is_public_checkbox','value':1, 'name': 'attachments[' + attachmentId + '][is_public_checkbox]', checked:'checked' } ).toggle(!eagerUpload),
$('<a>&nbsp</a>').attr({ 'href': "#", 'class': 'remove-upload', 'data-confirm' : "您确定要删除吗?" }).click(removeFile).toggle(!eagerUpload), $('<a>&nbsp;&nbsp;&nbsp;</a>').attr({ 'href': "#", 'class': 'remove-upload', 'data-confirm' : $(inputEl).data('areYouSure') }).click(removeFile).toggle(!eagerUpload),
$('<div>', { 'class': 'div_attachments', 'name': 'div_'+'attachments_' + attachmentId} ) $('<div>', { 'class': 'div_attachments', 'name': 'div_'+'attachments_' + attachmentId} )
).appendTo('#attachments_fields'); ).appendTo('#attachments_fields');
@ -86,8 +86,7 @@ function ajaxUpload(file, attachmentId, fileSpan, inputEl) {
//gcm files count and add delete_all link //gcm files count and add delete_all link
var count=$('#attachments_fields>span').length; var count=$('#attachments_fields>span').length;
$('#upload_file_count').html("已上传"+"<span id=\"count\">"+count+"</span>"+"个文件"); $('#upload_file_count').html("<span id=\"count\">"+count+"</span>"+"个文件已上传");
if(count>=1){ if(count>=1){
var add_attachs=$('.add_attachment'); var add_attachs=$('.add_attachment');
var delete_all=$('.remove_all'); var delete_all=$('.remove_all');
@ -121,7 +120,7 @@ function removeFile() {
//gcm delete all file //gcm delete all file
function removeAll(){ function removeAll(){
if(confirm("您确定要删除所有文件吗?")){ if(confirm("您确定要删除所有文件吗")){
$(".remove-upload").removeAttr("data-confirm"); $(".remove-upload").removeAttr("data-confirm");
$(".remove-upload").click(); $(".remove-upload").click();
} }

View File

@ -31,7 +31,7 @@ a{ text-decoration:none; }
.fl{ float: left;} .fl{ float: left;}
.fr{ float:right;} .fr{ float:right;}
.project_h4{ font-size:14px; color:#3b3b3b;} .project_h4{ font-size:14px; color:#3b3b3b;}
.project_watch_new{color: #fff !important;font-size:12px; display:block !important; padding: 0px 4px !important; margin-right: 10px !important; height: 20px !important; line-height: 21px !important;padding-top:1px !important; background: none repeat scroll 0% 0% #64BDD9 !important;}
.project_content{ width:940px; margin:10px auto;} .project_content{ width:940px; margin:10px auto;}
.project_left{ float:left;} .project_left{ float:left;}
@ -51,7 +51,6 @@ a{ text-decoration:none; }
a.info_foot_num{ font-weight: bold; color:#3ca5c6; } a.info_foot_num{ font-weight: bold; color:#3ca5c6; }
.pr_info_foot{ color:#7f7f7f; margin-top:5px; font-size:12px } .pr_info_foot{ color:#7f7f7f; margin-top:5px; font-size:12px }
a:hover.info_foot_num{ color:#2390b2;} a:hover.info_foot_num{ color:#2390b2;}
/*左侧导航*/ /*左侧导航*/
.subNavBox{width:222px; background:#fff;margin:10px 10px 0 0;} .subNavBox{width:222px; background:#fff;margin:10px 10px 0 0;}
.subNav{border-bottom:solid 1px #e5e3da;cursor:pointer;font-weight:bold;font-size:14px;color:#3ca5c6;line-height:28px;padding-left:10px;background-color:#fff;} .subNav{border-bottom:solid 1px #e5e3da;cursor:pointer;font-weight:bold;font-size:14px;color:#3ca5c6;line-height:28px;padding-left:10px;background-color:#fff;}
@ -75,7 +74,7 @@ a:hover.subnav_green{ background:#14ad5a;}
.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;} .lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;}
.lg-foot:hover{ color:#787b7e;} .lg-foot:hover{ color:#787b7e;}
/****标签(和资源库的tag样式一致)***/ /****标签(和资源库的tag样式一致)***/
.project_Label{ width:220px; padding-left:10px; padding-right:10px; background:#fff; margin-top:10px;} .project_Label{ width:220px; padding-left:10px !important; padding-right:10px; background:#fff; margin-top:10px;}
a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;} a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;}
.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; } .submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; }
.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;} .isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;}

View File

@ -57,6 +57,7 @@ a.re_select{
display: block; display: block;
height: 22px; height: 22px;
border: 1px solid #ff9900; border: 1px solid #ff9900;
width: auto;
color: #ff9900; color: #ff9900;
margin-left: 10px; margin-left: 10px;
padding-left: 10px; padding-left: 10px;