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? %> +
Name | +Type | ++ | + | + | |
---|---|---|---|---|---|
<%= 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?' %> | +