diff --git a/app/controllers/authors_controller.rb b/app/controllers/authors_controller.rb
index dd919ce..098e283 100644
--- a/app/controllers/authors_controller.rb
+++ b/app/controllers/authors_controller.rb
@@ -6,6 +6,13 @@ class AuthorsController < ApplicationController
def show
@author = Author.find(params[:id])
@title = @author.name
+ @tabs = [
+ { action: :titles, label: "Titles", active: true, icon: "book" },
+ { action: :series, label: "Series", active: false, icon: "list" },
+ { action: :authors, label: "Co-Authors", active: false, icon: "user" },
+ ]
+ # active tab
+ titles
end
def index
@@ -18,4 +25,35 @@ class AuthorsController < ApplicationController
end
end
+ def titles
+ @author = Author.find(params[:id])
+ @books = @author.books.sort{|b1,b2|b1.sort <=> b2.sort}
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ def series
+ @author = Author.find(params[:id])
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ def authors
+ @author = Author.find(params[:id])
+ @authors = Array.new
+ @author.books.each do |b|
+ @authors.concat b.authors
+ end
+ @authors.uniq!
+ @authors.select! {|a| a != @author}
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
end
diff --git a/app/views/authors/_authors.html.erb b/app/views/authors/_authors.html.erb
new file mode 100644
index 0000000..66b5806
--- /dev/null
+++ b/app/views/authors/_authors.html.erb
@@ -0,0 +1,6 @@
+
<%= pluralize(@authors.count, "co-author") %>
+
+<% @authors.each do |a| %>
+ - <%= link_to a.name, a %>
+<% end %>
+
diff --git a/app/views/authors/_series.html.erb b/app/views/authors/_series.html.erb
new file mode 100644
index 0000000..1333ed7
--- /dev/null
+++ b/app/views/authors/_series.html.erb
@@ -0,0 +1 @@
+TODO
diff --git a/app/views/authors/_titles.html.erb b/app/views/authors/_titles.html.erb
new file mode 100644
index 0000000..fe12681
--- /dev/null
+++ b/app/views/authors/_titles.html.erb
@@ -0,0 +1,6 @@
+<%= pluralize(@books.count, "book") %>
+
+<% @books.each do |b| %>
+ - <%= link_to b.title, b %>
+<% end %>
+
diff --git a/app/views/authors/authors.js.erb b/app/views/authors/authors.js.erb
new file mode 100644
index 0000000..a10d277
--- /dev/null
+++ b/app/views/authors/authors.js.erb
@@ -0,0 +1 @@
+$("#tabcontent").html("<%= escape_javascript(render(partial: "authors/authors")) %>");
diff --git a/app/views/authors/series.js.erb b/app/views/authors/series.js.erb
new file mode 100644
index 0000000..5b791cd
--- /dev/null
+++ b/app/views/authors/series.js.erb
@@ -0,0 +1 @@
+$("#tabcontent").html("<%= escape_javascript(render(partial: "authors/series")) %>");
diff --git a/app/views/authors/show.html.erb b/app/views/authors/show.html.erb
index db6dddd..6e8144d 100644
--- a/app/views/authors/show.html.erb
+++ b/app/views/authors/show.html.erb
@@ -1 +1,21 @@
-<%= @author.name %>
+
+
+<% @tabs.each do |tab| %>
+ - ">
+ <%= link_to({ controller: "authors", action: tab[:action], id: @author}, { data: { toggle: 'tab', target: tab[:action] }, remote: true }) do %>
+ <%= tab[:label] %>
+ <% end %>
+
+<% end %>
+
+
+<% @tabs.each do |tab|
+ if tab[:active] %>
+<%= render(partial: "authors/#{ tab[:action]}") %>
+<% end
+end %>
+
diff --git a/app/views/authors/titles.js.erb b/app/views/authors/titles.js.erb
new file mode 100644
index 0000000..49681eb
--- /dev/null
+++ b/app/views/authors/titles.js.erb
@@ -0,0 +1 @@
+$("#tabcontent").html("<%= escape_javascript(render(partial: "authors/titles")) %>");
diff --git a/config/routes.rb b/config/routes.rb
index de6af97..af5e0d0 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,7 +6,13 @@ Rails.application.routes.draw do
get 'cover', on: :member
end
get '/books/:id/data/:data_format/' => 'data#show', as: "book_data"
- resources :authors, only: [ :index, :show ]
+ resources :authors, only: [ :index, :show ] do
+ member do
+ get 'titles'
+ get 'series'
+ get 'authors'
+ end
+ end
resources :series, only: [ :index, :show ]
#get 'series/:id' => 'series#show'
#get 'series' => 'series#index'