class OrgDocumentCommentsController < ApplicationController before_filter :find_organization, :only => [:new, :create, :show, :index] before_filter :authorize_allowed, :only => [:create, :add_reply, :add_reply_in_doc] helper :attachments,:organizations layout 'base_org' def new @org_document_comment = OrgDocumentComment.new end def create @org_document_comment = OrgDocumentComment.new(:organization_id => @organization.id, :creator_id => User.current.id) @org_document_comment.title = params[:org_document_comment][:title] @org_document_comment.content = params[:org_document_comment][:content] @org_document_comment.status = params[:org_document_comment][:status] == "on" ? 1 : 0 @org_document_comment.save_attachments(params[:attachments]) if params[:field_id] @org_document_comment.org_subfield_id = params[:field_id].to_i end if @org_document_comment.save flash.keep[:notice] = l(:notice_successful_create) EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @org_document_comment.id, :created_at => @org_document_comment.updated_at) if params[:field_id] @org_subfield = OrgSubfield.find(params[:field_id]) if @org_subfield.subfield_subdomain_dir.nil? redirect_to organization_path(@organization, :org_subfield_id => params[:field_id]) else redirect_to show_org_subfield_organization_path(:id => @organization.id, :sub_dir_name => @org_subfield.subfield_subdomain_dir.name) end else redirect_to organization_org_document_comments_path(@organization) end else redirect_to new_org_document_comment_path(:organization_id => @organization.id) end end def show @document = OrgDocumentComment.find(params[:id]) @org_subfield = OrgSubfield.where(:id => @document.org_subfield_id).first @subfield_content = @organization.org_subfields.order("priority") all_comments = [] @replies = get_all_children(all_comments, @document) @reply_count = @replies.count @page = params[:page] ? params[:page].to_i + 1 : 0 @limit = 10 @replies = @replies[@page * @limit..@page * @limit + 9] respond_to do |format| format.js format.html {render :layout => (@organization.switch_type && @document && !@document.org_subfield_id.blank?) ? 'base_org_custom' : 'base_org'} end end def index if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) @documents = @organization.org_document_comments.where("parent_id is null").order("created_at desc") else render_403 end end def update @org_document = OrgDocumentComment.find(params[:id]) @org_document.update_attributes(:title => params[:org_document_comment][:title], :content => params[:org_document_comment][:content]) Attachment.attach_files(@org_document, params[:attachments]) # @org_document.save_attachments(params[:attachments]) if @org_document.parent.nil? act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", @org_document.id).first act.update_attributes(:updated_at => @org_document.updated_at) EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @org_document.id, :created_at => Time.now) end respond_to do |format| format.html { if params[:flag].to_i == 0 redirect_to organization_org_document_comments_path(:organization_id => @org_document.organization.id) else if params[:flag].to_i == 1 redirect_to org_document_comment_path(@org_document.root.id, :organization_id => @org_document.organization.id) else redirect_to organization_path(@org_document.organization.id, :org_subfield_id => params[:org_subfield_id]) end end } end end def edit @org_document = OrgDocumentComment.find(params[:id]) @flag = params[:flag] @organization = Organization.find(params[:organization_id]) end def add_reply @document = OrgDocumentComment.find(params[:id]).root @act = OrgActivity.find(params[:act_id]) @comment = OrgDocumentComment.new(:organization_id => @document.organization_id, :creator_id => User.current.id, :reply_id => params[:id]) @comment.content = params[:org_content] @comment.root_id = @document.id @document.children << @comment @document.save end def add_reply_in_doc @document = OrgDocumentComment.find(params[:id]).root @comment = OrgDocumentComment.new(:organization_id => @document.organization_id, :creator_id => User.current.id, :reply_id => params[:id]) if params[:org_comment].blank? @comment.content = params[:org_content] else @comment.content = params[:org_comment][:org_content] end @comment.root_id = @document.id @document.children << @comment @document.save respond_to do |format| format.html {redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)} end end def find_organization @organization = Organization.find(params[:organization_id]) end def authorize_allowed unless User.current.logged? redirect_to signin_url return end end def destroy @org_document_comment = OrgDocumentComment.find(params[:id]) @org_sub_id = @org_document_comment.org_subfield_id org = @org_document_comment.root.organization if @org_document_comment.id == org.home_id org.update_attributes(:home_id => nil) end if params[:user_activity_id] @act = OrgActivity.find(params[:user_activity_id]) @document = @org_document_comment.root end if @org_document_comment.destroy end respond_to do |format| format.js end end def delete_reply @org_document_comment = OrgDocumentComment.find(params[:id]) @document = @org_document_comment.root org = @org_document_comment.organization @org_document_comment.destroy respond_to do |format| format.html {redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)} end end def quote @org_comment = OrgDocumentComment.find(params[:id]) @temp = OrgDocumentComment.new respond_to do | format| format.js end end def reply @document = OrgDocumentComment.find(params[:id]) @org_document = OrgDocumentComment.new(:creator_id => User.current.id, :reply_id => params[:id]) @org_document.title = params[:org_document_comment][:title] @org_document.content = params[:org_document_comment][:content] @org_document.root_id = @document.root_id.nil? ? @document.id : @document.root_id @document.children << @org_document @document = @document.root @user_activity_id = params[:user_activity_id] @act = OrgActivity.find(@user_activity_id) if @user_activity_id respond_to do |format| format.html { redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id) } format.js end end end