This commit is contained in:
huang 2015-05-26 16:30:28 +08:00
commit b89ff45fc2
13 changed files with 105 additions and 47 deletions

View File

@ -98,6 +98,7 @@ module Mobile
params do
requires :token, type: String
requires :user_id, type: Integer,desc: '被留言的用户id'
requires :page,type:Integer,desc:'请求数据的页码'
end
get ':user_id/messages' do
us = UsersService.new
@ -106,7 +107,7 @@ module Mobile
present :status,0
end
desc "给用户留言或回复用户留言"
desc "回复用户留言"
params do
requires :token, type: String
requires :user_id, type: Integer,desc: '被留言的用户id'
@ -115,12 +116,23 @@ module Mobile
requires :parent_id,type:Integer,desc:'留言父id'
requires :ref_message_id,type:Integer,desc:'引用消息id'
end
post ':user_id/leave_message' do
post ':user_id/reply_message' do
us = UsersService.new
jours = us.reply_user_messages params,current_user
present :status,0
end
desc "给用户留言"
params do
requires :token, type: String
requires :user_id, type: Integer,desc:'被留言的用户id'
requires :content, type: String,desc:'留言内容'
end
post ':user_id/leave_message' do
us = UsersService.new
us.leave_message params,current_user
present :data,0
end
end
end
end

View File

@ -24,6 +24,7 @@ class AvatarController < ApplicationController
else
@image_file=params[:filename]
end
@temp_file = StringIO.new(@temp_file)
end
end
end
@ -32,7 +33,7 @@ class AvatarController < ApplicationController
if @temp_file.size > Setting.upload_avatar_max_size.to_i
@status = 1
@msg = l(:error_upload_avatar_to_large, :max_size => number_to_human_size(Setting.upload_avatar_max_size.to_i))
elsif Trustie::Utils::Image.new(@temp_file.tempfile.path).image?
elsif Trustie::Utils::Image.new(@temp_file).image?
diskfile=disk_filename(@source_type,@source_id)
@urlfile='/' << File.join("images","avatars",avatar_directory(@source_type),avatar_filename(@source_id,@image_file))
@ -50,6 +51,7 @@ class AvatarController < ApplicationController
md5 = Digest::MD5.new
File.open(diskfile, "wb") do |f|
if @temp_file.respond_to?(:read)
@temp_file.rewind
buffer = ""
while (buffer = @temp_file.read(8192))
f.write(buffer)

View File

@ -9,11 +9,15 @@ class ZipdownController < ApplicationController
#统一下载功能
def download
if User.current.logged?
begin
send_file "#{OUTPUT_FOLDER}/#{params[:file]}", :filename => params[:filename], :type => detect_content_type(params[:file])
rescue => e
render file: 'public/no_file_found.html'
end
else
render_403
end
end
#一个作业下所有文件打包下载只有admin和课程老师有权限

View File

@ -158,7 +158,7 @@ class UsersService
# 获取某个用户的所有留言信息
def get_all_messages params
user = User.find(params[:user_id])
jours = user.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
jours = user.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC').page(params[:page] || 1).per(10)
jours.update_all(:is_readed => true, :status => false)
jours.each do |journal|
fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false)
@ -184,7 +184,11 @@ class UsersService
user.add_jour(nil, nil,nil,options)
end
# 给用户留言
def leave_message params,current_user
obj = User.find(params[:user_id]).add_jour(current_user, params[:content], 0)
obj
end
#关注列表

View File

@ -1,16 +1,9 @@
<script>
$(function(){
$("input[nhtype='dateinput']").each(function(){
$(this).attr('readonly',true);
$(this).datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,showClearButton: true,showTodayButton: true,
changeMonth: true,
changeYear: true
});
$(this).change(function(){
$("#issue_query_form").submit();
})
$("input[nhname='date_show']").change(function(){
if($(this).val()=='创建日期起始' || $(this).val()=='创建日期结束')return;
$("input[nhname='date_val']",$(this).parent('div')).val($(this).val());
remote_function();
});
});
function remote_function() {
@ -32,6 +25,7 @@
}
function nh_reset_form() {
$("#issue_query_form")[0].reset();
$("input[nhname='date_val']").val('');//涛哥的火狐reset 清不掉这个值 我擦
remote_function();
}
@ -55,10 +49,15 @@
<div class="problem_search" >
<input class="problem_search_input fl" id="v_subject" type="text" name="subject" value="<%= @subject ? @subject : ""%>" onkeypress="EnterPress(event)" onkeydown="EnterPress()">
<a href="javascript:void(0)" class="problem_search_btn fl" onclick="remote_function();" >搜索</a>
<!--<a href="javascript:void(0)" class="problem_search_btn fl" onclick="nh_reset_form();" >清空</a>-->
<a href="javascript:void(0)" class="grey_btn fl ml10" onclick="nh_reset_form();" >清空</a>
</div><!--problem_search end-->
<%= link_to '新建问题', new_project_issue_path(@project) , :class => "green_u_btn fr ml10" %>
<p class="problem_p fr" ><%= l(:label_issues_sum) %><a href="javascript:void(0)" class="c_red"><%= @project.issues.visible.all.count %></a>
<%= l(:lable_issues_undo) %><a href="javascript:void(0)" class="c_red"><%= @project.issues.where('status_id in (1,2,4,6)').visible.all.count %> </a>
</p>
<div id="filter_form" class="fr" >
<div class="cl"></div>
<div id="filter_form" class="fl">
<%= select( :issue, :user_id, principals_options_for_isuue_list(@project),
{ :include_blank => false,:selected=>@assign_to_id ? @assign_to_id : 0
@ -85,24 +84,22 @@
)
%>
</div><!--filter_form end-->
<div>
<div class="fl">&nbsp;</div>
<div>
<input name="issue_create_date_start" nhname="date_val" type="hidden"/>
<%= text_field_tag 'issue_create_date_start_show', '创建日期起始',:readonly=>true, :size=>15, :nhname=>'date_show',:style=>'float:left;'%>
<%= calendar_for('issue_create_date_start_show') %>
</div>
<div style="float:left;">&nbsp;-&nbsp;</div>
<div>
<input name="issue_create_date_end" nhname="date_val" type="hidden"/>
<%= text_field_tag 'issue_create_date_end_show', '创建日期结束',:readonly=>true, :size=>15, :nhname=>'date_show',:style=>'float:left;'%>
<%= calendar_for('issue_create_date_end_show') %>
</div>
</div>
<div class="cl"></div>
<!--<div>-->
<!--<div style="float:left;">创建时间&nbsp;:&nbsp;</div>-->
<!--<div>-->
<!--<%#= text_field_tag 'issue_create_date_start', '',:readonly=>true, :size=>15, :onchange => "remote_function()",:style=>'float:left;'%>-->
<!--<%#= calendar_for('issue_create_date_start') %>-->
<!--</div>-->
<!--<div style="float:left;">&nbsp;-&nbsp;</div>-->
<!--<div>-->
<!--<%#= text_field_tag 'issue_create_date_end', '',:readonly=>true, :size=>15, :onchange => "remote_function()",:style=>'float:left;'%>-->
<!--<%#= calendar_for('issue_create_date_end') %>-->
<!--</div>-->
<!--</div>-->
<!--<div class="cl"></div>-->
<% end %>
<p class="problem_p fl" ><%= l(:label_issues_sum) %><a href="javascript:void(0)" class="c_red"><%= @project.issues.visible.all.count %></a>
<%= l(:lable_issues_undo) %><a href="javascript:void(0)" class="c_red"><%= @project.issues.where('status_id in (1,2,4,6)').visible.all.count %> </a>
</p>
<div class="cl"></div>
<% end %>

View File

@ -2,3 +2,4 @@
$('#message_quote').html("<%= raw escape_javascript(@temp.content.html_safe) %>");
$('#quote').val("<%= raw escape_javascript(@content) %>");
showAndScrollTo("new_memo", "cke_editor01");
$("img").removeAttr("align");

View File

@ -182,4 +182,5 @@
}
});
};
$("img").removeAttr("align");
</script>

View File

@ -15,6 +15,11 @@
<p style="padding-left: 180px;"><%= setting_text_field :activity_days_default, :size => 6 %> <%= l(:label_day_plural) %></p>
<p style="padding-left: 180px;"><%= setting_text_field :host_name, :size => 60 %>
<p style="padding-left: 180px;"><%= setting_text_field :host_course, :size => 60 %>
<p style="padding-left: 180px;"><%= setting_text_field :host_contest, :size => 60 %>
<p style="padding-left: 180px;"><%= setting_text_field :host_user, :size => 60 %>
<p style="padding-left: 180px;"><%= setting_text_field :host_repository, :size => 60 %>
<em class="info"><%= l(:label_example) %>: <%= @guessed_host_and_path %></em></p>
<p style="padding-left: 180px;"><%= setting_select :protocol, [['HTTP', 'http'], ['HTTPS', 'https']] %></p>

View File

@ -183,6 +183,10 @@ en:
setting_bcc_recipients: Blind carbon copy recipients (bcc)
setting_plain_text_mail: Plain text mail (no HTML)
setting_host_name: Host name and path
setting_host_course: Host course and path
setting_host_contest: Host contest and path
setting_host_user: Host user and path
setting_host_repository: Host repository and path
setting_text_formatting: Text formatting
setting_wiki_compression: Wiki history compression
setting_feeds_limit: Maximum number of items in Atom feeds

View File

@ -190,6 +190,10 @@ zh:
setting_bcc_recipients: 使用密件抄送 (bcc)
setting_plain_text_mail: 纯文本无HTML
setting_host_name: 主机名称
setting_host_course: 课程域名
setting_host_contest: 竞赛域名
setting_host_user: 用户域名
setting_host_repository: 仓库域名
setting_text_formatting: 文本格式
setting_wiki_compression: 压缩Wiki历史文档
setting_feeds_limit: RSS Feed内容条数限制

View File

@ -659,6 +659,16 @@ ActiveRecord::Schema.define(:version => 20150514133640) do
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_details_copy", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details_copy", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_replies", :id => false, :force => true do |t|
t.integer "journal_id"
t.integer "user_id"

View File

@ -17,21 +17,20 @@ module Trustie
end
def jpeg?(data)
data[0,4]== 0xff.chr + 0xd8.chr + 0xff.chr + 0xe0.chr
data[0,3]== 0xff.chr + 0xd8.chr + 0xff.chr
end
def png?(data)
data[0,2]==0x89.chr + 80.chr
end
def image?
begin
f = File.open(@file,'rb') # rb means to read using binary
return false if f.size < 9
data = f.read(9) # magic numbers are up to 9 bytes
return bitmap?(data) || gif?(data) || jpeg?(data) || png?(data)
ensure
f.close
data = ''
if @file.respond_to?(:read)
data = @file.read(9)
@file.rewind
end
return false if data.size < 9
bitmap?(data) || gif?(data) || jpeg?(data) || png?(data)
end
def compress(size=300)

View File

@ -0,0 +1,15 @@
require 'rails_helper'
RSpec.describe "avatar request", type: :request do
describe "上传头像" do
let(:user){FactoryGirl.create(:user)}
it "参数正确,可以成功上传头像" do
data = File.open("#{Rails.root}/spec/fixtures/test.jpg").read
binding.pry
post upload_avatar_path(source_type: 'User', source_id: user.id, filename: 'test.jpg')
expect(response).to have_http_status(:success)
expect(response.body).to include(/\/images\/avatars\/User\//)
end
end
end