From 8abb20b4c8262ffbc08a887e2db90a6c37bd228c Mon Sep 17 00:00:00 2001 From: Rueshyna Date: Mon, 19 Nov 2012 12:07:24 +0800 Subject: [PATCH] add edit function --- .../desktop/journal_pages_controller.rb | 86 +++++++++++- .../desktop_publications_controller.rb | 128 ++++-------------- app/views/desktop/journal_pages/edit.html.erb | 5 +- app/views/desktop/journal_pages/new.html.erb | 2 +- config/routes.rb | 11 +- .../app/models/writing_journal.rb | 3 +- 6 files changed, 116 insertions(+), 119 deletions(-) diff --git a/app/controllers/desktop/journal_pages_controller.rb b/app/controllers/desktop/journal_pages_controller.rb index 4db1bbdf4..7dd5c4b76 100644 --- a/app/controllers/desktop/journal_pages_controller.rb +++ b/app/controllers/desktop/journal_pages_controller.rb @@ -1,4 +1,5 @@ class Desktop::JournalPagesController < ApplicationController + def index @writing_journal = WritingJournal.where(create_user_id: current_user.id) @level_types = JournalLevelType.all @@ -8,6 +9,9 @@ class Desktop::JournalPagesController < ApplicationController end end + def show + end + def new @writing_journal = WritingJournal.new @level_types = JournalLevelType.all @@ -20,6 +24,13 @@ class Desktop::JournalPagesController < ApplicationController end def edit + @writing_journal= WritingJournal.find(params[:id]) + @level_types = JournalLevelType.all + @author_types = JournalAuthorType.all + @paper_types= JournalPaperType.all + respond_to do |format| + format.html { render :layout => false} + end end def create @@ -43,12 +54,77 @@ class Desktop::JournalPagesController < ApplicationController end end - def show - end - def update - if params[:commit].eql?"Edit" - params[:writing_journal][:update_user_id] = current_user.id + if params[:commit].eql?"Save" + @writing_journal= WritingJournal.find(params[:id]) + end + + if not params[:writing_journal][:publication_date].nil? + params[:writing_journal][:publication_date] = \ + Date.new *(params[:writing_journal][:publication_date].split("/").map{|s| s.to_i}) + end + + respond_to do |format| + if @writing_journal.update_attributes(params[:writing_journal]) + format.html { redirect_to desktop_journal_pages_url, :layout => false, notice: 'User was successfully updated.'} + format.json { head :no_content } + else + format.html { render action: "edit" } + format.json { render json: @user.errors, status: :unprocessable_entity } + end end end + + def check_file_type file + if not file.nil? + file_type = MIME::Types.type_for(file).first.to_s.split("/")[1] + + case file_type + when "jpg", "jpeg" + type = "jpg" + when "text", "txt" + type = "txt" + when "pdf" + type = "pdf" + when "png" + type = "png" + else "readme" + end + + file_type = "/assets/ft-icons/#{type}/#{type}-48_32.png" + else + file_type = "" + end + end + + def get_journals_json + publications = WritingJournal.where(create_user_id: current_user.id) + + sort_publications= Hash.new + data = Array.new + + publications.each do |publication| + if sort_publications[publication.journal_title].nil? + sort_publications[publication.journal_title] = Array.new + end + sort_publications[publication.journal_title] << + { title: publication.paper_title, + keywords: publication.keywords, + abstract: publication.abstract, + level: publication.journal_paper_type_id, + coauthors: publication.authors, + year: publication.year, + url_edit: edit_desktop_journal_page_path(publication), + files: publication.writing_journal_files.collect{|file| + {title: file.title, url: file.file.url, icon: check_file_type(file.file.url)} + } + } + end + + sort_publications.each do |journal, papers| + data << {title: journal, papers: papers} + end + + render json: JSON.pretty_generate(data) + end end diff --git a/app/controllers/desktop_publications_controller.rb b/app/controllers/desktop_publications_controller.rb index 1eb6b2449..6c38de375 100644 --- a/app/controllers/desktop_publications_controller.rb +++ b/app/controllers/desktop_publications_controller.rb @@ -4,29 +4,6 @@ class DesktopPublicationsController< ApplicationController def journal_p render "desktop/journal_p", :layout => false end -# -# def journal_p_list -# render "desktop/journal_pages/list", :layout => false -# end - -# def journal_p_add -# @writing_journal = WritingJournal.new -# @level_types = JournalLevelType.all -# -# respond_to do |format| -# format.html { render "desktop/journal_pages/add", :layout => false} -# end -# end -# -# def journal_p_create -# @writing_journal = WritingJournal.all.first -# @level_types = JournalLevelType.all -# respond_to do |format| -# format.html { render "desktop/journal_pages/list", :layout => false} -# #format.js -# end -# -# end def books render "desktop/books", :layout => false @@ -52,82 +29,31 @@ class DesktopPublicationsController< ApplicationController render "desktop/seminar_pages/add", :layout => false end - def create_journal - Journal.create(user_id: current_user.id, title: "Ice Cream Sandwich") - b = Array.new - b << {"success"=>"true"} - render :json=>b.to_json - end - - def check_file_type file - if not file.nil? - file_type = MIME::Types.type_for(file).first.to_s.split("/")[1] - - case file_type - when "jpg", "jpeg" - type = "jpg" - when "text", "txt" - type = "txt" - when "pdf" - type = "pdf" - when "png" - type = "png" - else "readme" - end - - file_type = "/assets/ft-icons/#{type}/#{type}-48_32.png" - else - file_type = "" - end - end - - def getjournals - publications = WritingJournal.where(create_user_id: current_user.id) - - sort_publications= Hash.new - data = Array.new - - publications.each do |publication| - if sort_publications[publication.journal_title].nil? - sort_publications[publication.journal_title] = Array.new - end - sort_publications[publication.journal_title] << - { title: publication.paper_title, - keywords: publication.keywords, - abstract: publication.abstract, - level: publication.journal_paper_type_id, - coauthors: publication.authors, - year: publication.year, - files: publication.writing_journal_files.collect{|file| - {title: file.title, url: file.file.url, icon: check_file_type(file.file.url)} - } - } - end - - sort_publications.each do |journal, papers| - data << {title: journal, papers: papers} - end - - render json: JSON.pretty_generate(data) - end - - def delete_journal - @journals = Journal.find("") - @journals.delete - b = Array.new - b << {"success"=>"true"} - render :json=>b.to_json - end - - def update_journal - @journal = Journal.find("4ff2d6ebbd98eb02b9000017") - @papers = @journal.papers - @papers.each do |paper| - paper.update_attributes(:user_id => current_user.id) - end - b = Array.new - - b << {"success"=>"true"} - render :json=>b.to_json - end +# def create_journal +# Journal.create(user_id: current_user.id, title: "Ice Cream Sandwich") +# b = Array.new +# b << {"success"=>"true"} +# render :json=>b.to_json +# end +# +# +# def delete_journal +# @journals = Journal.find("") +# @journals.delete +# b = Array.new +# b << {"success"=>"true"} +# render :json=>b.to_json +# end +# +# def update_journal +# @journal = Journal.find("4ff2d6ebbd98eb02b9000017") +# @papers = @journal.papers +# @papers.each do |paper| +# paper.update_attributes(:user_id => current_user.id) +# end +# b = Array.new +# +# b << {"success"=>"true"} +# render :json=>b.to_json +# end end diff --git a/app/views/desktop/journal_pages/edit.html.erb b/app/views/desktop/journal_pages/edit.html.erb index 420308270..1e331bf42 100644 --- a/app/views/desktop/journal_pages/edit.html.erb +++ b/app/views/desktop/journal_pages/edit.html.erb @@ -1,2 +1,3 @@ -

Desktop::JournalPages#edit

-

Find me in app/views/desktop/journal_pages/edit.html.erb

+<%= form_for @writing_journal, url: desktop_journal_page_path(@writing_journal) do |f| %> + <%= render partial: 'desktop/journal_pages/form', locals: {:f => f} %> +<%end%> diff --git a/app/views/desktop/journal_pages/new.html.erb b/app/views/desktop/journal_pages/new.html.erb index 85c5c9085..58a4bf9a8 100644 --- a/app/views/desktop/journal_pages/new.html.erb +++ b/app/views/desktop/journal_pages/new.html.erb @@ -1,3 +1,3 @@ -<%= form_for @writing_journal, url: desktop_journal_pages_path do |f| %> +<%= form_for @writing_journal, html: { multipart: true } , url: desktop_journal_pages_path do |f| %> <%= render partial: 'desktop/journal_pages/form', locals: {:f => f} %> <%end%> diff --git a/config/routes.rb b/config/routes.rb index 84bb967e1..042987349 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,4 @@ Orbit::Application.routes.draw do - devise_for :users mount Resque::Server, :at => "/admin/resque" @@ -151,8 +150,8 @@ Orbit::Application.routes.draw do namespace :desktop do + match '/journal_pages/get_journals_json' => 'journal_pages#get_journals_json' , via: :get match "/" => "desktop#index" - match '/desktop'=>'desktop#desktop' match '/app_manager'=>'desktop#app_manager' match '/sections'=>'desktop#sections' @@ -167,16 +166,13 @@ Orbit::Application.routes.draw do match '/newpositions/'=>'desktop#newpositions' match '/connections/'=>'desktop#connections' match '/widget_layout' => 'desktop#widget_layout' - match '/temp_func/'=>'desktop#temp_func' + resources :journal_pages end # namespace :desktop_publications do - match 'desktop_publications/journal_p'=>'desktop_publications#journal_p' - # match 'desktop_publications/journal_p_list'=>'desktop_publications#journal_p_list' - # match 'desktop_publications/journal_p_add'=>'desktop_publications#journal_p_add' - # match 'desktop_publications/journal_p_create'=>'desktop_publications#journal_p_create' , :via => :post + match 'desktop_publications/journal_p'=>'desktop_publications#journal_p' match 'desktop_publications/books' => 'desktop_publications#books' match 'desktop_publications/books_list'=>'desktop_publications#books_list' match 'desktop_publications/books_add'=>'desktop_publications#books_add' @@ -184,7 +180,6 @@ Orbit::Application.routes.draw do match 'desktop_publications/seminar_p' => 'desktop_publications#seminar_p' match 'desktop_publications/seminar_p_list/'=>'desktop_publications#seminar_p_list' match 'desktop_publications/seminar_p_add/'=>'desktop_publications#seminar_p_add' - match 'desktop_publications/getjournals' => 'desktop_publications#getjournals' # end # namespace :desktop_research do diff --git a/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb b/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb index 0c5cda311..873d26413 100644 --- a/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb +++ b/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb @@ -12,7 +12,7 @@ class WritingJournal has_and_belongs_to_many :tags, :class_name => "PersonalJournalTag" has_and_belongs_to_many :journal_author_types has_and_belongs_to_many :journal_level_types - + has_many :writing_journal_files, :autosave => true, :dependent => :destroy belongs_to :journal_paper_type field :year @@ -31,7 +31,6 @@ class WritingJournal field :create_user_id, :type => BSON::ObjectId field :update_user_id, :type => BSON::ObjectId - has_many :writing_journal_files, :autosave => true, :dependent => :destroy accepts_nested_attributes_for :writing_journal_files, :allow_destroy => true after_save :save_writing_journal_files