diff --git a/app/controllers/blogs_controller.rb b/app/controllers/blogs_controller.rb index 9a25810..ef73b44 100644 --- a/app/controllers/blogs_controller.rb +++ b/app/controllers/blogs_controller.rb @@ -1,7 +1,9 @@ +#encoding: utf-8 class BlogsController < ApplicationController - + before_filter :require_login, only: [:set, :set_userinfo, :upload_img, :set_blog, :update_blog, :change_password, :update_password] def index - + @articles = Article.order('updated_at desc').limit(10) + @new_comments = ArticleComment.order('updated_at desc').limit(10) end def set @@ -9,11 +11,29 @@ class BlogsController < ApplicationController end def set_userinfo - + user = User.find @current_user.id + user.nick_name = params[:user][:nick_name] if params[:user][:nick_name].present? + begin + if params[:user][:avatar].present? + upload_info = upload_picture params[:user][:avatar] + user.avatar = "/images/#{upload_info[:real_file_name]}" + end + rescue UploadException => e + flash.now[:error] = e.message + render 'set' + else + if user.save + redirect_to set_blogs_path + else + flash.now[:error] = user.errors.full_messages.first + render 'set' + end + end end def set_blog - + @blog = BlogInfo.first + @blog = BlogInfo.new unless @blog end def update_blog @@ -21,7 +41,7 @@ class BlogsController < ApplicationController end def about - + @blog = BlogInfo.first end def change_password @@ -37,7 +57,12 @@ class BlogsController < ApplicationController end def preview - + result = {status: false, message: ''} + if params[:content] + result[:status] = true + result[:message] = markdown_parser params[:content] + end + render json: result.to_json end protected @@ -45,4 +70,4 @@ class BlogsController < ApplicationController def upload_picture(file) end -end \ No newline at end of file +end diff --git a/app/views/blogs/set.html.haml b/app/views/blogs/set.html.haml new file mode 100755 index 0000000..ec1790f --- /dev/null +++ b/app/views/blogs/set.html.haml @@ -0,0 +1,79 @@ +.row + %h3.set_title 设置 + = render 'set_sidebar' + .col-md-8 + = form_for :user, url: set_userinfo_blogs_path, role: 'form' do |f| + .form-group + %label{for: 'user_nick_name'} 昵称 + = f.text_field :nick_name, value: @current_user.nickname, placeholder: '昵称', class: 'form-control', size: 10 + .form-group + %label{for: 'user_avatar'} 头像 + .row.text-left + .col-md-2#img_preview + %img#set_user_avatar{src: "#{avatar_url(@current_user)}"} + .col-md-8.avatar-field + = f.file_field :avatar + .form-group + = f.submit '修改', class: 'btn btn-primary set-btn' + + +:javascript + function previewImage(file){ + var MAXWIDTH = 80; + var MAXHEIGHT = 80; + var div = document.getElementById('img_preview'); + if (file.files && file.files[0]) + { + div.innerHTML = ''; + var img = document.getElementById('imghead'); + img.onload = function(){ + var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight); + img.height = rect.height; + img.style.marginTop = rect.top+'px'; + } + var reader = new FileReader(); + reader.onload = function(evt){img.src = evt.target.result;} + reader.readAsDataURL(file.files[0]); + } + else + { + var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="'; + file.select(); + var src = document.selection.createRange().text; + div.innerHTML = ''; + var img = document.getElementById('imghead'); + img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src; + var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight); + status =('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height); + div.innerHTML = "
"; + } + } + + function clacImgZoomParam( maxWidth, maxHeight, width, height ){ + var param = {top:0, left:0, width:width, height:height}; + if( width>maxWidth || height>maxHeight ) + { + rateWidth = width / maxWidth; + rateHeight = height / maxHeight; + + if( rateWidth > rateHeight ) + { + param.width = maxWidth; + param.height = Math.round(height / rateWidth); + }else + { + param.width = Math.round(width / rateHeight); + param.height = maxHeight; + } + } + + param.left = Math.round((maxWidth - param.width) / 2); + param.top = Math.round((maxHeight - param.height) / 2); + return param; + } + + $(function(){ + $("#user_avatar").change(function() { + previewImage(this); + }); + }); \ No newline at end of file