From d502f561ef43d09c970cf3795706ba803b916112 Mon Sep 17 00:00:00 2001 From: Rueshyna Date: Wed, 21 Nov 2012 01:56:30 +0800 Subject: [PATCH] add co-author db and curd page, but it can't destory it... --- .../desktop/co_authors_controller.rb | 71 +++++++++++++++++++ app/models/user/co_author.rb | 19 +++++ app/views/desktop/co_authors/_form.html.erb | 44 ++++++++++++ app/views/desktop/co_authors/edit.html.erb | 3 + app/views/desktop/co_authors/index.html.erb | 20 ++++++ app/views/desktop/co_authors/new.html.erb | 3 + app/views/desktop/co_authors/show.html.erb | 0 7 files changed, 160 insertions(+) create mode 100644 app/controllers/desktop/co_authors_controller.rb create mode 100644 app/models/user/co_author.rb create mode 100644 app/views/desktop/co_authors/_form.html.erb create mode 100644 app/views/desktop/co_authors/edit.html.erb create mode 100644 app/views/desktop/co_authors/index.html.erb create mode 100644 app/views/desktop/co_authors/new.html.erb create mode 100644 app/views/desktop/co_authors/show.html.erb diff --git a/app/controllers/desktop/co_authors_controller.rb b/app/controllers/desktop/co_authors_controller.rb new file mode 100644 index 00000000..6c4d980a --- /dev/null +++ b/app/controllers/desktop/co_authors_controller.rb @@ -0,0 +1,71 @@ +class Desktop::CoAuthorsController < ApplicationController + def index + @co_authors = CoAuthor.where(name_id: current_user.id) + + respond_to do |format| + format.html { render :layout => false} + format.json { render json: @co_authors } + end + end + + def show + @co_author = CoAuthor.find(params[:id]) + + respond_to do |format| + format.html { redirect_to desktop_co_authors_url, :layout => false } + format.json { render json: @co_author } + end + end + + def new + @co_author = CoAuthor.new + + respond_to do |format| + format.html { render :layout => false} + end + end + + def edit + @co_author = CoAuthor.find(params[:id]) + respond_to do |format| + format.html { render :layout => false} + end + end + + def create + @co_author = CoAuthor.new(params[:co_author]) + @co_author.name_id= current_user.id + + respond_to do |format| + if @co_author.save + format.html { redirect_to desktop_co_authors_path, :layout => false, notice: 'CoAuthor was successfully created.' } + else + format.html { render action: "new", :layout => false} + end + end + end + + def update + @co_author = CoAuthor.find(params[:id]) + + respond_to do |format| + if @co_author.update_attributes(params[:co_author]) + format.html { redirect_to desktop_co_authors_url, notice: 'CoAuthor was successfully updated.' } + format.json { head :no_content } + else + format.html { render action: "edit" } + format.json { render json: @co_author.errors, status: :unprocessable_entity } + end + end + end + + def delete + @co_author = CoAuthor.find(params[:id]) + @co_author.destroy + + respond_to do |format| + format.html { redirect_to desktop_co_authors_url, :layout => false } + format.json { head :no_content } + end + end +end diff --git a/app/models/user/co_author.rb b/app/models/user/co_author.rb new file mode 100644 index 00000000..ab7c75a5 --- /dev/null +++ b/app/models/user/co_author.rb @@ -0,0 +1,19 @@ +class CoAuthor + include Mongoid::Document + + LANGUAGE_TYPES = [ "English", "Chinese" ] + + field :name_id, type: BSON::ObjectId + field :co_author, localize: true + field :email + field :type + + + VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i + validates :email, format: { with: VALID_EMAIL_REGEX }, + uniqueness: { case_sensitive: false } + + validates :co_author, presence: true + before_save { |coauthor| coauthor.email = email.downcase } +end + diff --git a/app/views/desktop/co_authors/_form.html.erb b/app/views/desktop/co_authors/_form.html.erb new file mode 100644 index 00000000..22b8433e --- /dev/null +++ b/app/views/desktop/co_authors/_form.html.erb @@ -0,0 +1,44 @@ +<% if @co_author.errors.any? %> +
+

<%= pluralize(@co_author.errors.count, "error") %> prohibited this user from being saved:

+ +
+<% end %> +
+ + <%= button_tag "Save", name: "commit", value: "Save", class: "fn_btn hh2 thmc2 thmtxt" %> + <%= button_tag "Cancel", name: "commit", value: "Cancel", class: "fn_btn hh2 thmc2 thmtxt" %> +
+ +
+ diff --git a/app/views/desktop/co_authors/edit.html.erb b/app/views/desktop/co_authors/edit.html.erb new file mode 100644 index 00000000..2f48f4c5 --- /dev/null +++ b/app/views/desktop/co_authors/edit.html.erb @@ -0,0 +1,3 @@ +<%= form_for @co_author, url: desktop_co_author_path(@co_author) do |f| %> + <%= render partial: 'desktop/co_authors/form', locals: {:f => f} %> +<% end %> diff --git a/app/views/desktop/co_authors/index.html.erb b/app/views/desktop/co_authors/index.html.erb new file mode 100644 index 00000000..147552d2 --- /dev/null +++ b/app/views/desktop/co_authors/index.html.erb @@ -0,0 +1,20 @@ + + + + + + + + + + +<% @co_authors.each do |co_author| %> + + + + + + +<% end %> +
NameEMailType
<%= co_author.co_author %><%= co_author.email %><%= co_author.type%><%= link_to 'Destroy', desktop_co_author_path(co_author), method: :delete, confirm: 'Are you sure?' %>
+
diff --git a/app/views/desktop/co_authors/new.html.erb b/app/views/desktop/co_authors/new.html.erb new file mode 100644 index 00000000..5c6fab16 --- /dev/null +++ b/app/views/desktop/co_authors/new.html.erb @@ -0,0 +1,3 @@ +<%= form_for @co_author, url: desktop_co_authors_path do |f| %> + <%= render partial: 'desktop/co_authors/form', locals: {:f => f} %> +<% end %> diff --git a/app/views/desktop/co_authors/show.html.erb b/app/views/desktop/co_authors/show.html.erb new file mode 100644 index 00000000..e69de29b