diff --git a/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_co_author_relations_controller.rb b/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_co_author_relations_controller.rb
new file mode 100644
index 00000000..bfc09055
--- /dev/null
+++ b/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_co_author_relations_controller.rb
@@ -0,0 +1,63 @@
+class Panel::PersonalConference::Desktop::ConferenceCoAuthorRelationsController < ApplicationController
+ def index
+ @conference_co_author_relations = ConferenceCoAuthorRelation.all
+ new
+
+ respond_to do |format|
+ format.html {render layout: false }
+ end
+ end
+
+ def edit
+ @conference_co_author_relation = ConferenceCoAuthorRelation.find(params[:id])
+ respond_to do |format|
+ format.html { render :layout => false}
+ end
+ end
+
+ def new
+ @conference_co_author_relation = ConferenceCoAuthorRelation.new
+ end
+
+ def create
+ @conference_co_author_relation = ConferenceCoAuthorRelation.new(params[:conference_co_author_relation])
+ @conference_co_author_relations = ConferenceCoAuthorRelation.all
+
+ if @conference_co_author_relation.save
+ newv = render_to_string partial: "show_form", object: @conference_co_author_relations
+ render json: {success: true, msg: "New Relation successfully saved!", newvalue: newv}.to_json
+ else
+ error_msg = @conference_co_author_relation.errors.full_messages.join("
")
+ render json: {success: false, msg: error_msg}.to_json
+ end
+ end
+
+ def update
+ @conference_co_author_relation = ConferenceCoAuthorRelation.find(params[:id])
+ if @conference_co_author_relation.update_attributes(params[:conference_co_author_relation])
+ @conference_co_author_relations = ConferenceCoAuthorRelation.all
+ newv = render_to_string partial: "show_form", object: @conference_co_author_relations
+ render json: {success: true, msg: "New Relation successfully updated!", newvalue: newv}.to_json
+ else
+ error_msg = @conference_co_author.errors.full_messages.join("
")
+ render json: {success: false, msg: error_msg}.to_json
+ end
+ end
+
+ def destroy
+ @conference_co_author_relation = ConferenceCoAuthorRelation.find(params[:id])
+ @conference_co_author_relation.destroy
+ reset_co_author_relation
+
+ render :json => {success: true, msg: "deleted successfully!"}
+ end
+
+ private
+
+ def reset_co_author_relation
+ co_author = ConferenceCoAuthor.where(co_author_relations_id: @co_author_relation.id)
+ co_author.map do |c|
+ c.update_attributes(co_author_relations_id: nil)
+ end
+ end
+end
diff --git a/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_co_authors_controller.rb b/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_co_authors_controller.rb
new file mode 100644
index 00000000..f371b7e7
--- /dev/null
+++ b/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_co_authors_controller.rb
@@ -0,0 +1,59 @@
+class Panel::PersonalConference::Desktop::ConferenceCoAuthorsController < ApplicationController
+ def index
+ nils, not_nils = ConferenceCoAuthor.where(name_id: current_user.id)\
+ .asc(:co_author).partition{|p| p.email.nil?}
+ @conference_co_authors = not_nils + nils
+ @conference_co_author_relations = ConferenceCoAuthorRelation.all
+
+ respond_to do |format|
+ format.html { render :layout => false}
+ end
+ end
+
+ def new
+ @conference_co_author = ConferenceCoAuthor.new
+ @conference_co_author_relations = ConferenceCoAuthorRelation.all
+
+ respond_to do |format|
+ format.html { render :layout => false}
+ end
+ end
+
+ def edit
+ @conference_co_author = ConferenceCoAuthor.find(params[:id])
+ @conference_co_author_relations = ConferenceCoAuthorRelation.all
+ respond_to do |format|
+ format.html { render :layout => false}
+ end
+ end
+
+ def create
+ @conference_co_author = ConferenceCoAuthor.new(params[:conference_co_author])
+ @conference_co_author.name_id= current_user.id
+
+ if @conference_co_author.save
+ render json: {success:true, msg: t('create.sucess.co_author')}.to_json
+ else
+ error_msg = @conference_co_author.errors.full_messages.join("
")
+ render json: {success: false, msg: error_msg}.to_json
+ end
+ end
+
+ def update
+ @conference_co_author = ConferenceCoAuthor.find(params[:id])
+
+ if @conference_co_author.update_attributes(params[:co_author])
+ render json: {success:true, msg: t('update.sucess.co_author')}.to_json
+ else
+ error_msg = @conference_co_author.errors.full_messages.join("
")
+ render json: {success: false, msg: error_msg}.to_json
+ end
+ end
+
+ def destroy
+ @conference_co_author = ConferenceCoAuthor.find(params[:id])
+ @conference_co_author.destroy
+
+ render :json => {success: true, msg: "Co-author deleted successfully!"}
+ end
+end
diff --git a/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_form.html.erb b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_form.html.erb
new file mode 100644
index 00000000..d6f16b23
--- /dev/null
+++ b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_form.html.erb
@@ -0,0 +1,11 @@
+<%= f.text_field :relation %>
+
+<%= f.submit "Save", class: "ini_input hp hh2 thmtxt thmc2", style: "margin-left: 10px;" %>
+<% if not @conference_co_author_relation.new_record? %>
+ <%= submit_tag "Cancel", :type => "button", class: "bt-cancel-type ini_input hp hh2 thmtxt" %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_new.html.erb b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_new.html.erb
new file mode 100644
index 00000000..42c5a8a8
--- /dev/null
+++ b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_new.html.erb
@@ -0,0 +1,3 @@
+<%= form_for(@conference_co_author_relation, url: panel_personal_conference_desktop_conference_co_author_relations_path, html:{"form-type"=>"ajax_form", "callback-method"=>"coauthorRelationForm"} ) do |f| %>
+ <%= render partial: 'form' , locals: {:f => f}%>
+<% end %>
diff --git a/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_show_form.html.erb b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_show_form.html.erb
new file mode 100644
index 00000000..72566f1a
--- /dev/null
+++ b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_co_author_relations/_show_form.html.erb
@@ -0,0 +1,17 @@
+<% @conference_co_author_relations.each_with_index do |conference_co_author_relation,i| %>
+ <% if ( i % 6 ) == 0 %>
+