diff --git a/app/controllers/books_controller.rb b/app/controllers/books_controller.rb index f8ee1d2..c788296 100644 --- a/app/controllers/books_controller.rb +++ b/app/controllers/books_controller.rb @@ -1,50 +1,68 @@ class BooksController < ApplicationController def index - books = Book.order_by(:year=>'desc').page(OrbitHelper.params[:page_no]).per(OrbitHelper.page_data_count) - book_list = books.collect do |book| - { - "book_title" => book.book_title, - "author" => book.authors, + books = Book.order_by(:year=>'desc').page(OrbitHelper.params[:page_no]).per(OrbitHelper.page_data_count) + book_list = books.collect do |book| + { + "book_title" => book.book_title, + "author" => book.authors, "year" => book.year, - "link_to_show" => OrbitHelper.url_to_show(book.to_param) - } - end - { - "books" => book_list, - "extras" => { + "link_to_show" => OrbitHelper.url_to_show(book.to_param) + } + end + { + "books" => book_list, + "extras" => { "widget-title" => t("module_name.book"), "th_year" => t('personal_plugins.year'), "th_title" => t("personal_book.book_title"), "th_author" => t('personal_plugins.author') }, "total_pages" => books.total_pages - } + } end def show - params = OrbitHelper.params - book = Book.find_by(uid: params[:uid]) - publication_date = book.publication_date.to_date.strftime("%Y/%m/%d") rescue nil - publish_date = book.publish_date.to_date.strftime("%Y/%m/%d") rescue nil - files = book.book_files.map{|file| { "file_url" => file.member_book_file.url, "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title) } } rescue [] - { - "book_files" => files, - "data" => { - "title" => book.book_title, - "year" => book.year, - "authors" => book.authors, - "isbn" => book.isbn, - "language" => book.language, - "pages" => book.pages, - "keywords" => book.keywords, - "publication_date" => publication_date , - "url" => book.url, - "note" => book.note, - "extracted_chapters" => book.extracted_chapters, - "publish_date" => publish_date, - "publisher" => book.publisher, - "editor" => book.editor - } - } + params = OrbitHelper.params + plugin = Book.find_by(uid: params[:uid]) + + fields_to_show = [ + "book_title", + "editor", + "publisher", + "publish_date", + "publication_date", + "isbn", + "extracted_chapters", + "pages", + "url", + "keywords", + "note", + "file" + ] + + {"plugin_datas"=>plugin.get_plugin_data(fields_to_show)} + + # publication_date = book.publication_date.to_date.strftime("%Y/%m/%d") rescue nil + # publish_date = book.publish_date.to_date.strftime("%Y/%m/%d") rescue nil + # files = book.book_files.map{|file| { "file_url" => file.member_book_file.url, "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title) } } rescue [] + # { + # "book_files" => files, + # "data" => { + # "title" => book.book_title, + # "year" => book.year, + # "authors" => book.authors, + # "isbn" => book.isbn, + # "language" => book.language, + # "pages" => book.pages, + # "keywords" => book.keywords, + # "publication_date" => publication_date , + # "url" => book.url, + # "note" => book.note, + # "extracted_chapters" => book.extracted_chapters, + # "publish_date" => publish_date, + # "publisher" => book.publisher, + # "editor" => book.editor + # } + # } end end diff --git a/app/models/book.rb b/app/models/book.rb index 9cdd445..8532950 100644 --- a/app/models/book.rb +++ b/app/models/book.rb @@ -92,6 +92,45 @@ class Book authors.join(', ') end + def get_plugin_data(fields_to_show) + plugin_datas = [] + fields_to_show.each do |field| + plugin_data = self.get_plugin_field_data(field) + next if plugin_data.blank? or plugin_data['value'].blank? + plugin_datas << plugin_data + end + plugin_datas + end + + def get_plugin_field_data(field) + case field + when "language" + value = I18n.t(self.language) rescue "" + when "publish_date", "publication_date" + value = self.send(field).to_date.strftime("%Y-%m-%d") rescue nil + when "file" + files = [] + 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}
  • " + end + value = files.join("") + else + value = self.send(field) rescue "" + end + + value = (value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "#{value}" : value + + { + "key"=>field, + "title_class"=>"book-#{field.gsub('_','-')}-field", + "value_class"=>"book-#{field.gsub('_','-')}-value", + "title"=>I18n.t('personal_book.'+field), + "value"=>value + } + end + protected def add_http diff --git a/config/locales/en.yml b/config/locales/en.yml index 2d30df8..4aaba8a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -21,6 +21,7 @@ en: keywords : "Keywords" abstract : "Abstract" publication_date : "Date of Publication" + publish_date: "Publish Date" url : "Reference URL" note : "Note" level_type : "Level Type"