diff --git a/app/assets/javascripts/lib/pageslide.js b/app/assets/javascripts/lib/pageslide.js index 1d62e5b..11981cb 100755 --- a/app/assets/javascripts/lib/pageslide.js +++ b/app/assets/javascripts/lib/pageslide.js @@ -318,7 +318,7 @@ if( e.type == "keyup" && e.keyCode != 27) return; // Make sure it's visible, and we're not modal - if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) { + if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) && !$("#modify_fields_to_show").is(":visible")) { $.pageslide.close(); } }); diff --git a/app/assets/stylesheets/structure.css b/app/assets/stylesheets/structure.css index fe66fa3..1b97b52 100644 --- a/app/assets/stylesheets/structure.css +++ b/app/assets/stylesheets/structure.css @@ -6,4 +6,39 @@ */ .ui-helper-hidden-accessible{ display: none; +} + +.current-roles { + list-style: none; + margin: 0 0 20px 0; + padding: 0; +} +.current-roles > li { + padding: 8px 10px; + margin-bottom: 8px; + border-radius: 4px; + border: 1px solid #eee; + -webkit-box-shadow: 0 0 2px 0 rgba(0,0,0,.2); + box-shadow: 0 0 2px 0 rgba(0,0,0,.2); +} +.role-value { + display: inline-block; + margin-right: 8px; +} +.remove-role { + cursor: pointer; + float: right; + padding-left: 16px; + border-left: 2px solid #e6e6e6; +} +.remove-role > i { + font-size: 1.125rem; +} +.remove-role:hover { + color: #ff4444; +} + +.link-to-show { + float: right; + margin-right: 16px; } \ No newline at end of file diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 55e4862..dcd3b21 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -2,12 +2,14 @@ class MembersController < ApplicationController def index page_roles = OrbitHelper.page_categories page_role_status = OrbitHelper.page_role_status + params = OrbitHelper.params + page = Page.where(:page_id => params[:page_id]).first rescue nil + fields_to_show = page.custom_array_field if !page.nil? rescue [] fields_to_show = [ {"key"=>"name", "type"=>"profile","sort_order"=>2,"link_to_show"=>true}, - {"key"=>"discipline", "type"=>"role", "max_length"=>12}, {"key"=>"email", "type"=>"profile"}, {"key"=>"office_tel", "type"=>"profile"} - ] + ] if fields_to_show.blank? if OrbitHelper.member_sort_position sort = "data['list_order']" @@ -35,16 +37,10 @@ class MembersController < ApplicationController role_list = [] roles.each do |role| - attribute_field = AttributeField.where(:key => 'job_title', :role_id => role['id']).first - if !attribute_field.blank? - role_fields_to_show = [{"id"=> attribute_field.id.to_s, "key"=>"job_title", "type"=>"role","sort_order"=>1}] + fields_to_show - else - role_fields_to_show = fields_to_show - end status_list = [] if !role['status'].blank? role['status'].each do |status| - member_profiles = get_members_by_status(status, sort, role_fields_to_show) + member_profiles = get_members_by_status(status, sort, fields_to_show) status_list << { "status-title" => status.title, "members" => member_profiles } if !member_profiles.blank? end else @@ -53,7 +49,7 @@ class MembersController < ApplicationController role_status_ids = role_status.collect{|status| status.id.to_s} role_status.each do |status| - member_profiles = get_members_by_status(status, sort, role_fields_to_show) + member_profiles = get_members_by_status(status, sort, fields_to_show) next if member_profiles.blank? status_list << { "status-title" => status.title, "members" => member_profiles } end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 261e9b7..864e8b1 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -173,6 +173,60 @@ class PagesController < ApplicationController end end + def get_member_attributes + @page_id = params[:page_id] + @selected_attribs = Page.find(@page_id).custom_array_field + @selected_attribs = [ + {"key"=>"name", "type"=>"profile","sort_order"=>2,"link_to_show"=>true, "human_readable" => I18n.t("users.name")}, + {"key"=>"email", "type"=>"profile", "human_readable" => I18n.t("users.email")}, + {"key"=>"office_tel", "type"=>"profile", "human_readable" => I18n.t("users.office_tel")} + ] if @selected_attribs.blank? + personal_attribs = [ + {"key" => "first_name", "human_readable" => I18n.t("users.first_name")}, + {"key" => "last_name", "human_readable" => I18n.t("users.last_name")}, + {"key" => "name", "human_readable" => I18n.t("users.name")}, + {"key" => "sex", "human_readable" => I18n.t("users.sex")}, + {"key" => "office_tel", "human_readable" => I18n.t("users.office_tel")}, + {"key" => "birthday", "human_readable" => I18n.t("users.birthday")}, + {"key" => "address", "human_readable" => I18n.t("users.address")}, + {"key" => "personal_website", "human_readable" => I18n.t("users.personal_website")}, + {"key" => "autobiography", "human_readable" => I18n.t("users.autobiography")}, + {"key" => "email", "human_readable" => I18n.t("users.email")} + ] + + custom_attribs = MemberProfileField.all.collect do |mpf| + {"key" => mpf.key, "human_readable" => mpf.title} + end + + role_attribs = AttributeField.all.collect do |af| + {"key" => af.key, "human_readable" => af.title} + end + + @attribs = { + "profile" => personal_attribs, + "custom" => custom_attribs, + "role" => role_attribs, + "types" =>[ + {"key" => "profile", "human_readable" => "Profile"}, + {"key" => "custom", "human_readable" => "Custom"}, + {"key" => "role", "human_readable" => "Role"} + ] + } + render :partial => "member_frontend_field" + end + + def save_member_frontend_fields + fields = params["fields"] + array = [] + fields.each do |field| + array << field.last + end + page = Page.find(params[:page_id]) + page.custom_array_field = array + page.save + render :json => {"success" => true}.to_json + end + def get_categories module_app = ModuleApp.find_by_key(params[:module]); if module_app.key.eql?("member") diff --git a/app/models/page.rb b/app/models/page.rb index 0f3d801..55edda4 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -22,6 +22,8 @@ class Page field :member_sort_position, type: Boolean, :default => false field :enabled_for_sitemap, type: Array, :default => [] field :rss2_id, type: String + field :custom_string_field, type: String + field :custom_array_field, type: Array, :default => [] has_many :page_parts, :autosave => true, :dependent => :destroy has_many :mobile_page_parts, :autosave => true, :dependent => :destroy diff --git a/app/models/sub_part.rb b/app/models/sub_part.rb index ff9f9dd..1c79500 100644 --- a/app/models/sub_part.rb +++ b/app/models/sub_part.rb @@ -10,7 +10,7 @@ class SubPart field :content, localize: true field :data_count, type: Integer, default: 10 field :categories, type: Array, :default => [] - field :tags, type: Array, :default => [] + field :tags, type: Array, :default => [] field :custom_string_field, type: String field :custom_array_field, type: Array, :default => [] diff --git a/app/views/admin/items/index.html.erb b/app/views/admin/items/index.html.erb index 62d7f19..6ea8f34 100644 --- a/app/views/admin/items/index.html.erb +++ b/app/views/admin/items/index.html.erb @@ -8,6 +8,7 @@ <%= render 'node_and_children', {node: node, level: 0} %> <% end %> +<%= render :partial => "pages/modify_member_frontend_fields" %> <%##= render 'layouts/delete_modal', delete_options: {remote: true} %> <%#= render 'form_page' %> <%#= render 'form_link' %> diff --git a/app/views/pages/_form.html.erb b/app/views/pages/_form.html.erb index a90baa6..014535b 100644 --- a/app/views/pages/_form.html.erb +++ b/app/views/pages/_form.html.erb @@ -29,16 +29,36 @@ -
- <% if @module_app and @module_app.key.eql?("member") %> - -
- <%= f.radio_button :member_sort_position, false, checked: !@page.member_sort_position? %> <%= t(:sort_by_role_fields) %>
- <%= f.radio_button :member_sort_position, true, checked: @page.member_sort_position?%> <%= t(:sort_manually) %> - <%= t(:sort_edit_order) %> +<% if @module_app and @module_app.key.eql?("member") %> +
+ +
+ <%= f.radio_button :member_sort_position, false, checked: !@page.member_sort_position? %> <%= t(:sort_by_role_fields) %>
+ <%= f.radio_button :member_sort_position, true, checked: @page.member_sort_position?%> <%= t(:sort_manually) %> + <%= t(:sort_edit_order) %>
+
- <% end %> -
+
+ +
+ <%= t(:modify) %> + +
+
+<% end %>
diff --git a/app/views/pages/_member_frontend_field.html.erb b/app/views/pages/_member_frontend_field.html.erb new file mode 100644 index 0000000..7061281 --- /dev/null +++ b/app/views/pages/_member_frontend_field.html.erb @@ -0,0 +1,136 @@ +
+
+
    + +
+
+ +
+ + + + + + + Add role +
+ + +
+ + Save + Cancel +
+
+ + + diff --git a/app/views/pages/_modify_member_frontend_fields.html.erb b/app/views/pages/_modify_member_frontend_fields.html.erb new file mode 100644 index 0000000..b00ca67 --- /dev/null +++ b/app/views/pages/_modify_member_frontend_fields.html.erb @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 7a61e35..a3c7bb4 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -7,4 +7,4 @@ <%= page.url %> <% end %> - + \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 810db4e..5adf29b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -649,6 +649,7 @@ en: first_name: First Name last_name: Last Name male: Male + discipline: Discipline name: Name valid_old_password: Current password doesn't match confirmation new_password: New password