diff --git a/app/controllers/admin/personal_plugin_intros_controller.rb b/app/controllers/admin/personal_plugin_intros_controller.rb new file mode 100644 index 0000000..18ffb8b --- /dev/null +++ b/app/controllers/admin/personal_plugin_intros_controller.rb @@ -0,0 +1,67 @@ +class Admin::PersonalPluginIntrosController < OrbitMemberController + def index + get_types + @plugin_intro = @types.where(member_profile_id: params[:member_profile_id]).first rescue nil + + if @plugin_intro.blank? + @set_type = @types.new() + @url = eval("admin_#{@app_type}s_path(member_profile_id: params[:member_profile_id])") + @verb = :post + else + @set_type = @types.find(@plugin_intro.id) + @url = polymorphic_path(["admin", @plugin_intro]) + @verb = :put + end + end + + def new + end + + def show + end + + def create + get_types + + @plugin_intro = @types.new(personal_plugin_intro_params) + member = MemberProfile.find(personal_plugin_intro_params[:member_profile_id]) + respond_to do |format| + if @plugin_intro.save + format.html { redirect_to(admin_member_url(id: member.to_param, show_plugin_profile: @reback_name)) } + end + end + + end + + def edit + end + + def update + get_types + + @plugin_intro = @types.find(params[:id]) + member = MemberProfile.find(personal_plugin_intro_params[:member_profile_id]) + + respond_to do |format| + if @plugin_intro.update_attributes(personal_plugin_intro_params) + format.html { redirect_to(admin_member_url(id: member.to_param,show_plugin_profile: @reback_name)) } + end + end + end + + def destroy + end + + private + + def personal_plugin_intro_params + params.require(:plugin_intro).permit! + end + + protected + + def get_types + @types = @app_type.classify.constantize + end + +end diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 893a9d0..4aab9bb 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -32,20 +32,31 @@ class MembersController < ApplicationController member = MemberProfile.find_by(uid: params[:uid]) plugins = OrbitApp::Plugin::Registration.all rescue nil - plugin_list = plugins.collect do |plugin| - plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil - pd = plugin_data.collect do |p| - { - "data_title" => p.slug_title, - "link_to_show" => OrbitHelper.url_to_show(p.to_param) + "?method=personal_plugin&plugin_name=#{plugin.app_name}" - } - end + plugin_list = plugins.collect do |plugin| + intro = PersonalPluginIntro.find_by(member_profile_id:member.id, _type: "#{plugin.app_name}Intro") - { - "plugin_data" => pd, - "plugin_title" => plugin.app_name.titleize - } - end + if intro.complete_list == true + plugin_data = plugin.app_name.constantize.where(member_profile_id: member) rescue nil + pd = plugin_data.collect do |p| + { + "data_title" => p.slug_title, + "link_to_show" => OrbitHelper.url_to_show(p.to_param) + "?method=personal_plugin&plugin_name=#{plugin.app_name}" + } + end + { + "plugin_data" => pd, + "plugin_title" => plugin.app_name.titleize + } + # end + elsif intro.brief_intro == true + pd = [] + pd << { "data_title" => intro.text.html_safe} + { + "plugin_data" => pd, + "plugin_title" => plugin.app_name.titleize + } + end + end if member.avatar.present? image = member.avatar.thumb.url diff --git a/app/helpers/admin/personal_plugin_intros_helper.rb b/app/helpers/admin/personal_plugin_intros_helper.rb new file mode 100644 index 0000000..5801ad2 --- /dev/null +++ b/app/helpers/admin/personal_plugin_intros_helper.rb @@ -0,0 +1,2 @@ +module Admin::PersonalPluginIntrosHelper +end diff --git a/app/models/member_profile.rb b/app/models/member_profile.rb index 80bca11..1b9ab40 100644 --- a/app/models/member_profile.rb +++ b/app/models/member_profile.rb @@ -34,6 +34,8 @@ class MemberProfile has_many :attribute_values accepts_nested_attributes_for :attribute_values, allow_destroy: true + has_many :personal_plugin_intros + scope :can_display, ->{where(is_hidden: false).order_by([:is_top,:desc],[:created_at,:desc])} before_save :assign_default_position, :if => :assign_default_position? diff --git a/app/models/personal_plugin_intro.rb b/app/models/personal_plugin_intro.rb new file mode 100644 index 0000000..814ee49 --- /dev/null +++ b/app/models/personal_plugin_intro.rb @@ -0,0 +1,23 @@ +class PersonalPluginIntro + include Mongoid::Document + include Mongoid::Timestamps + + field :text, type: String, localize: true + field :brief_intro, type: Mongoid::Boolean, default: false + field :complete_list, type: Mongoid::Boolean, default: true + + belongs_to :member_profile + + def pp_object + brief_intro + end + + def self.from_id(id) + PersonalPluginIntro.find(id) rescue nil + end + + def self.is_localized?(field_name) + self.fields[field_name.to_s].localized? + end + +end diff --git a/app/views/admin/personal_plugin_intros/index.html.erb b/app/views/admin/personal_plugin_intros/index.html.erb new file mode 100644 index 0000000..d89a507 --- /dev/null +++ b/app/views/admin/personal_plugin_intros/index.html.erb @@ -0,0 +1,113 @@ +<% # encoding: utf-8 %> + +<% content_for :side_bar do %> + <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t(:user), :link_url => admin_site_site_info_path(current_site), :icon => 'icons-users', :side_bar_content => 'admin/members/side_bar'} %> +<% end %> + +<% content_for :page_specific_css do %> + <%= stylesheet_link_tag "lib/main-forms" %> + <%= stylesheet_link_tag "lib/fileupload" %> + <%= stylesheet_link_tag "lib/main-list" %> +<% end %> +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "lib/bootstrap-fileupload" %> + <%= javascript_include_tag "lib/file-type" %> +<% end %> + +<%= form_for(:plugin_intro, :url => @url, :method => @verb, html: {class: "form-horizontal main-forms previewable"} ) do |f| %> +
+<% end %> \ No newline at end of file diff --git a/test/controllers/admin/personal_plugin_intros_controller_test.rb b/test/controllers/admin/personal_plugin_intros_controller_test.rb new file mode 100644 index 0000000..a8fa4d7 --- /dev/null +++ b/test/controllers/admin/personal_plugin_intros_controller_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class Admin::PersonalPluginIntrosControllerTest < ActionController::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/fixtures/personal_plugin_intros.yml b/test/fixtures/personal_plugin_intros.yml new file mode 100644 index 0000000..8dc8909 --- /dev/null +++ b/test/fixtures/personal_plugin_intros.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + text: MyString + brief_intro: false + complete_list: false + +two: + text: MyString + brief_intro: false + complete_list: false diff --git a/test/helpers/admin/personal_plugin_intros_helper_test.rb b/test/helpers/admin/personal_plugin_intros_helper_test.rb new file mode 100644 index 0000000..c4870ec --- /dev/null +++ b/test/helpers/admin/personal_plugin_intros_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class Admin::PersonalPluginIntrosHelperTest < ActionView::TestCase +end diff --git a/test/models/personal_plugin_intro_test.rb b/test/models/personal_plugin_intro_test.rb new file mode 100644 index 0000000..814674b --- /dev/null +++ b/test/models/personal_plugin_intro_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class PersonalPluginIntroTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end