desktop project

This commit is contained in:
JiangRu 2014-12-05 16:04:01 +08:00
parent f05638c33c
commit b27d11a045
6 changed files with 118 additions and 48 deletions

View File

@ -1,4 +1,5 @@
class Admin::ProjectsController < OrbitMemberController class Admin::ProjectsController < OrbitMemberController
include Admin::PersonalProjectsHelper
layout "member_plugin" layout "member_plugin"
before_action :set_project, only: [:show, :edit , :update, :destroy] before_action :set_project, only: [:show, :edit , :update, :destroy]
@ -15,28 +16,48 @@ class Admin::ProjectsController < OrbitMemberController
def new def new
@member = MemberProfile.find_by(:uid=>params['uid']) rescue nil @member = MemberProfile.find_by(:uid=>params['uid']) rescue nil
@project = Project.new @project = Project.new
if params[:desktop]
render :layout => false
end
end end
def create def create
@member = MemberProfile.find(project_params['member_profile_id']) rescue nil @member = MemberProfile.find(project_params['member_profile_id']) rescue nil
@project = Project.new(project_params) @project = Project.new(project_params)
@project.save @project.save
redirect_to params['referer_url'] if params[:desktop] == "true"
render json: {"data" => get_paper_list}.to_json
else
redirect_to params['referer_url']
end
end end
def edit def edit
@member = @project.member_profile rescue nil @member = @project.member_profile rescue nil
if params[:desktop]
render :layout => false
end
end end
def update def update
@member = @project.member_profile rescue nil @member = @project.member_profile rescue nil
@project.update_attributes(project_params) @project.update_attributes(project_params)
@project.save @project.save
redirect_to params['referer_url'] if params[:desktop] == "true"
render json: {"data" => get_paper_list}.to_json
else
redirect_to params['referer_url']
end
end end
def destroy def destroy
@project.destroy @project.destroy
respond_to do |format|
format.html { redirect_to(admin_projects_url) }
# format.xml { head :ok }
format.js
format.json {render json: {"success" => true}}
end
end end
def toggle_hide def toggle_hide

View File

@ -0,0 +1,23 @@
class Desktop::PersonalProjectsController < DesktopAdminController
include Admin::PersonalProjectsHelper
def menu
user = OrbitHelper.current_user
[
{
"title" => "List",
"layout" => "list"
},
{
"title" => "Add/Edit",
"layout" => "form",
"new_path" => "/admin/members/#{user.member_profile.to_param}/projects/new"
}
]
end
def list
get_paper_list
end
end

View File

@ -0,0 +1,29 @@
module Admin::PersonalProjectsHelper
def get_paper_list
user = current_user.nil? ? OrbitHelper.current_user : current_user
user_profile = user.member_profile
projects = Project.where(:member_profile_id => user_profile.id)
projects = projects.collect do |p|
files = p.project_files.collect do |pf|
{
"title" => pf.title,
"description" => pf.description,
"link" => pf.file.url,
"extension" => (pf.file.url.split(".").last rescue "")
}
end
{
"id" => p.id.to_s,
"edit_url" => "/#{I18n.locale.to_s}/admin/members/#{user_profile.to_param}/projects/#{p.to_param}/edit",
"delete_url" => "/#{I18n.locale.to_s}/admin/projects/#{p.id.to_s}",
"paper_title" => p.project_title,
"keywords" => p.keywords,
"abstract" => p.abstract,
"files" => files
}
end
projects
end
end

View File

@ -236,31 +236,27 @@
<%= link_to t('cancel'), get_go_back, :class=>"btn" %> <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
</div> </div>
<% content_for :page_specific_javascript do %> <script>
<script> $('.main-forms').find('.add-on').tooltip().end().on('click', '.trigger, .delete_file, .remove_existing_record', function() {
$(document).ready(function() { if($(this).hasClass('trigger')) {
$('.main-forms .add-on').tooltip(); var new_id = $(this).prev().attr('value');
$(document).on('click', '#add_file', function(){ var old_id = new RegExp("new_project_files", "g");
var new_id = $(this).prev().attr('value'); var on = $('.language-nav li.active').index();
var old_id = new RegExp("new_project_files", "g"); var le = $(this).parent('.add-btn').prev('.add-target').children('.start-line').length;
var on = $('.language-nav li.active').index(); $(this).prev().attr('value', parseInt(new_id) + 1);
var le = $(this).parent('.add-btn').prev('.add-target').children('.start-line').length; $(this).parent().siblings('.add-target').append(("<%= escape_javascript(add_attribute 'form_file', f, :project_files) %>").replace(old_id, new_id));
$(this).prev().attr('value', parseInt(new_id) + 1); $(this).parent('.add-btn').prev('.add-target').children('.start-line').eq(le).children('.input-append').find('.tab-content').each(function() {
$(this).parent().siblings('.add-target').append(("<%= escape_javascript(add_attribute 'form_file', f, :project_files) %>").replace(old_id, new_id)); $(this).children('.tab-pane').eq(on).addClass('in active').siblings().removeClass('in active');
$(this).parent('.add-btn').prev('.add-target').children('.start-line').eq(le).children('.input-append').find('.tab-content').each(function() {
$(this).children('.tab-pane').eq(on).addClass('in active').siblings().removeClass('in active');
});
formTip();
}); });
$(document).on('click', '.delete_file', function(){ formTip();
$(this).parents('.input-prepend').remove(); $('.add-on').tooltip();
}); } else if($(this).hasClass('delete_file')) {
$(document).on('click', '.remove_existing_record', function(){ $(this).parents('.input-prepend').remove();
if(confirm("<%= I18n.t(:sure?)%>")){ } else if($(this).hasClass('remove_existing_record')) {
$(this).children('.should_destroy').attr('value', 1); if(confirm("<%= I18n.t(:sure?)%>")){
$(this).parents('.start-line').hide(); $(this).children('.should_destroy').attr('value', 1);
} $(this).parents('.start-line').hide();
}); }
}); }
</script> });
<% end %> </script>

View File

@ -7,6 +7,7 @@ module PersonalProject
personal_plugin :enable => true, :sort_number => '15', :app_name=>"Project", :intro_app_name=>"PersonalProjectIntro",:path=>"/plugin/personal_project/profile",:front_path=>"/profile",:admin_path=>"/admin/projects",:i18n=>'module_name.personal_project', :module_app_name=>"PersonalProject" personal_plugin :enable => true, :sort_number => '15', :app_name=>"Project", :intro_app_name=>"PersonalProjectIntro",:path=>"/plugin/personal_project/profile",:front_path=>"/profile",:admin_path=>"/admin/projects",:i18n=>'module_name.personal_project', :module_app_name=>"PersonalProject"
version "0.1" version "0.1"
desktop_enabled true
organization "Rulingcom" organization "Rulingcom"
author "RD dep" author "RD dep"
intro "I am intro" intro "I am intro"