From 198a9f503aa6f114c1a1feec4c5a15c73f2fec81 Mon Sep 17 00:00:00 2001 From: JiangRu Date: Fri, 5 Dec 2014 14:37:24 +0800 Subject: [PATCH] desktop book --- app/assets/images/desktop/book.svg | 0 app/controllers/admin/books_controller.rb | 60 ++++++++------- app/controllers/desktop/books_controller.rb | 23 ++++++ app/helpers/admin/books_helper.rb | 26 +++++++ app/models/book.rb | 10 ++- app/views/admin/books/_form.html.erb | 85 ++++++++++----------- lib/personal_book/engine.rb | 1 + 7 files changed, 128 insertions(+), 77 deletions(-) create mode 100644 app/assets/images/desktop/book.svg create mode 100644 app/controllers/desktop/books_controller.rb diff --git a/app/assets/images/desktop/book.svg b/app/assets/images/desktop/book.svg new file mode 100644 index 0000000..e69de29 diff --git a/app/controllers/admin/books_controller.rb b/app/controllers/admin/books_controller.rb index ecf8c1a..d20ff46 100644 --- a/app/controllers/admin/books_controller.rb +++ b/app/controllers/admin/books_controller.rb @@ -1,5 +1,5 @@ class Admin::BooksController < OrbitMemberController - include Admin::JournalPapersHelper + include Admin::BooksHelper layout "member_plugin" before_action :set_book, only: [:show, :edit , :update, :destroy] @@ -28,43 +28,46 @@ class Admin::BooksController < OrbitMemberController def edit @member = @book.member_profile + if params[:desktop] + render :layout => false + end end def update - respond_to do |format| - if @book.update_attributes(book_attributes) - format.html { redirect_to params['referer_url'] } - format.xml { head :ok } - else - format.html { render action: "edit" } - format.xml { render :xml => @book.errors, :status => :unprocessable_entity } - end + @member = @book.member_profile + @book.update_attributes(book_attributes) + @book.save + if params[:desktop] == "true" + render json: {"data" => get_paper_list}.to_json + else + redirect_to params['referer_url'] end end def new @book = Book.new - @member = MemberProfile.find_by(:uid=>params['uid']) rescue nil + @member = MemberProfile.find_by(:id=>params['member_profile_id']) rescue nil + if params[:desktop] + render :layout => false + end end def create + @member = MemberProfile.find(book_attributes['member_profile_id']) rescue nil @book = Book.new(book_attributes) - respond_to do |format| - if @book.save - format.html { redirect_to params['referer_url'] } - format.xml { render :xml => @book, :status => :created, :location => @book } - else - format.html { render action: "new" } - format.xml { render :xml => @book.errors, :status => :unprocessable_entity } - end - end + @book.save + if params[:desktop] == "true" + render json: {"data" => get_paper_list}.to_json + else + redirect_to params['referer_url'] + end end - def book_setting + def book_setting if current_user.is_admin? @set_author_type = BookAuthorType.new(display: 'List') @author_type_url = admin_books_path - + @set_book_type = BookType.new(display: 'List') @book_type_url = admin_books_path else @@ -74,10 +77,11 @@ class Admin::BooksController < OrbitMemberController def destroy @book.destroy - - respond_to do |format| - format.html { redirect_to(admin_books_url) } - format.js + respond_to do |format| + format.html { redirect_to(admin_books_url) } + # format.xml { head :ok } + format.js + format.json {render json: {"success" => true}} end end @@ -85,7 +89,7 @@ class Admin::BooksController < OrbitMemberController @set_author_type = BookAuthorType.new(display: 'List') @author_type_url = admin_book_author_types_path @set_author_type.id = params[:id] - + respond_to do |format| format.js end @@ -94,7 +98,7 @@ class Admin::BooksController < OrbitMemberController def edit_author_type @set_author_type = BookAuthorType.find(params[:book_id]) @author_type_url = admin_book_author_type_path(@set_author_type) - + respond_to do |format| format.js end @@ -167,5 +171,5 @@ class Admin::BooksController < OrbitMemberController def set_types @author_types = BookAuthorType.all @book_types = BookType.all - end + end end diff --git a/app/controllers/desktop/books_controller.rb b/app/controllers/desktop/books_controller.rb new file mode 100644 index 0000000..6ff34e0 --- /dev/null +++ b/app/controllers/desktop/books_controller.rb @@ -0,0 +1,23 @@ +class Desktop::BooksController < DesktopAdminController + include Admin::BooksHelper + + def menu + user = OrbitHelper.current_user + [ + { + "title" => "List", + "layout" => "list" + }, + { + "title" => "Add/Edit", + "layout" => "form", + "new_path" => "/#{I18n.locale.to_s}/admin/books/new?member_profile_id=#{user.member_profile_id.to_param}", + } + ] + end + + def list + get_paper_list + end + +end \ No newline at end of file diff --git a/app/helpers/admin/books_helper.rb b/app/helpers/admin/books_helper.rb index 3849308..db9b76b 100644 --- a/app/helpers/admin/books_helper.rb +++ b/app/helpers/admin/books_helper.rb @@ -6,4 +6,30 @@ module Admin::BooksHelper book_page = page if book_page.nil? request.protocol+(request.host_with_port+book_page.url+'/'+book_object.to_param).gsub('//','/') rescue "/" end + + def get_paper_list + user = current_user.nil? ? OrbitHelper.current_user : current_user + user_profile = user.member_profile + books = Book.where(:member_profile_id => user_profile.id) + books = books.collect do |b| + files = b.book_files.collect do |bf| + { + "title" => bf.title, + "description" => bf.description, + "link" => bf.member_book_file.url, + "extension" => (bf.file.url.split(".").last rescue "") + } + end + { + "id" => b.id.to_s, + "edit_url" => "/#{I18n.locale.to_s}/admin/books/#{b.to_param}/edit", + "delete_url" => "/#{I18n.locale.to_s}/admin/books/#{b.id.to_s}", + "paper_title" => b.book_title, + "keywords" => b.keywords, + "files" => files + } + + end + books + end end diff --git a/app/models/book.rb b/app/models/book.rb index 93d4ab4..8d6edca 100644 --- a/app/models/book.rb +++ b/app/models/book.rb @@ -22,9 +22,11 @@ class Book field :publication_date, type: DateTime field :url, type: String field :note, type: String + field :create_user_id, :type => BSON::ObjectId + field :update_user_id, :type => BSON::ObjectId field :rss2_id, type: String field :number_of_authors - + paginates_per 10 belongs_to :member_profile @@ -50,7 +52,7 @@ class Book title << pd[0]+"/"+pd[1] end - title.join(', ') + title.join(', ') end def get_plugin_data(fields_to_show) @@ -79,7 +81,7 @@ class Book value = self.send(field).to_date.strftime("%Y-%m-%d") rescue nil when "file" files = [] - self.book_files.each do |book_file| + self.book_files.each do |book_file| url = book_file.member_book_file.url title = (book_file.title.blank? ? File.basename(book_file.member_book_file.path) : book_file.title) files << "
  • #{title}
  • " @@ -90,7 +92,7 @@ class Book end value = (value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "#{value}" : value - + { "key"=>field, "title_class"=>"book-#{field.gsub('_','-')}-field", diff --git a/app/views/admin/books/_form.html.erb b/app/views/admin/books/_form.html.erb index f8bcb64..8efc7db 100644 --- a/app/views/admin/books/_form.html.erb +++ b/app/views/admin/books/_form.html.erb @@ -5,7 +5,7 @@ <%= stylesheet_link_tag "lib/main-list" %> <% end %> <% content_for :page_specific_javascript do %> - <%= javascript_include_tag "lib/bootstrap-fileupload" %> + <%= javascript_include_tag "lib/bootstrap-fileupload" %> <%= javascript_include_tag "lib/file-type" %> <%= javascript_include_tag "lib/module-area" %> <%= javascript_include_tag "lib/bootstrap-datetimepicker.js" %> @@ -17,7 +17,7 @@
    - +
    +
    @@ -78,7 +78,7 @@
    <%= select_year((@book.year ? @book.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'book[year]',:class => 'span1'} ) %>
    -
    +
    @@ -94,7 +94,7 @@
    <%= f.datetime_picker :publication_date, :no_label => true,:format=>"yyyy/MM/dd", :placeholder=>"YYYY/MM/DD" %>
    -
    +
    @@ -102,7 +102,7 @@
    <%= f.text_field :url , :class => "span6" %>
    -
    +
    @@ -110,7 +110,7 @@
    <%= f.text_field :keywords %>
    -
    +
    @@ -118,7 +118,7 @@
    <%= f.text_field :pages %>
    -
    +
    @@ -126,7 +126,7 @@
    <%= f.text_field :isbn %>
    -
    +
    @@ -138,7 +138,7 @@ <% end %>
    - +
    @@ -146,7 +146,7 @@
    <%= f.text_area :note, rows: 2, class: "input-block-level" %>
    -
    + @@ -181,13 +181,13 @@
    <% @site_in_use_locales.each_with_index do |locale, i| %> - +
    ">
    -
    +
    <%= f.fields_for :book_title_translations do |f| %> <%= f.text_field locale, class: "input-block-level", placeholder: t("personal_book.book_title"), value: (@book.book_title_translations[locale] rescue nil) %> <% end %> @@ -197,7 +197,7 @@
    -
    +
    <%= f.fields_for :extracted_chapters_translations do |f| %> <%= f.text_field locale, class: "input-block-level", placeholder: t("personal_book.extracted_chapters"), value: (@book.extracted_chapters_translations[locale] rescue nil) %> <% end %> @@ -207,7 +207,7 @@
    -
    +
    <%= f.fields_for :publisher_translations do |f| %> <%= f.text_field locale, class: "input-block-level", placeholder: t("personal_book.publisher"), value: (@book.publisher_translations[locale] rescue nil) %> <% end %> @@ -217,7 +217,7 @@
    -
    +
    <%= f.fields_for :editor_translations do |f| %> <%= f.text_field locale, class: "input-block-level", placeholder: t("personal_book.editor"), value: (@book.editor_translations[locale] rescue nil) %> <% end %> @@ -251,7 +251,7 @@ <%= f.fields_for :book_files, book_file do |f| %> <%= render :partial => 'form_file', :object => book_file, :locals => {:f => f, :i => i} %> <% end %> - <% end %> + <% end %>
    <% end %> @@ -277,34 +277,29 @@
    <%= f.submit t('submit'), class: 'btn btn-primary' %> - <%= link_to t('cancel'), get_go_back, :class=>"btn" %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
    -<% content_for :page_specific_javascript do %> - -<% end %> \ No newline at end of file + $('.add-on').tooltip(); + } else if($(this).hasClass('delete_file')) { + $(this).parents('.input-prepend').remove(); + } else if($(this).hasClass('remove_existing_record')) { + if(confirm("<%= I18n.t(:sure?)%>")){ + $(this).children('.should_destroy').attr('value', 1); + $(this).parents('.start-line').hide(); + } + } + }); + \ No newline at end of file diff --git a/lib/personal_book/engine.rb b/lib/personal_book/engine.rb index 916141a..844adcb 100644 --- a/lib/personal_book/engine.rb +++ b/lib/personal_book/engine.rb @@ -7,6 +7,7 @@ module PersonalBook personal_plugin :enable => true, :sort_number => '25', :app_name=>"Book", :intro_app_name=>"BookIntro",:path=>"/plugin/book/profile",:front_path=>"/profile",:admin_path=>"/admin/books",:i18n=>'module_name.book',:module_app_name=>'Book' version "0.1" + desktop_enabled true organization "Rulingcom" author "RD dep" intro "I am intro"