Skip to content

Commit

Permalink
[modify] gws/message : add message sort
Browse files Browse the repository at this point in the history
  • Loading branch information
itowtips committed Feb 1, 2018
1 parent 3514f47 commit ff007ba
Show file tree
Hide file tree
Showing 9 changed files with 156 additions and 9 deletions.
9 changes: 6 additions & 3 deletions app/assets/stylesheets/gws/memo/_gws.scss
Expand Up @@ -96,11 +96,14 @@
.head {
height: 20px;
position: relative;
.field { position: absolute; }
.field {
position: absolute;
cursor: pointer;
}
.from, .to { left: 82px; }
.title { left: 286px; }
.priority { right: 224px; }
.datetime { right: 128px; }
.priority { right: 206px; }
.datetime { right: 110px; }
.size { right: 14px; }
}
@include mb { display: none; }
Expand Down
3 changes: 3 additions & 0 deletions app/controllers/gws/memo/messages_controller.rb
Expand Up @@ -92,9 +92,12 @@ def send_forward_mails
public

def index
@sort_hash = @cur_user.memo_message_sort_hash(@cur_folder, params[:sort], params[:order])
dump(@sort_hash)
@items = @model.folder(@cur_folder, @cur_user).
site(@cur_site).
search(params[:s]).
reorder(@sort_hash).
page(params[:page]).per(50)
end

Expand Down
45 changes: 45 additions & 0 deletions app/models/concerns/gws/addon/memo/message_sort.rb
@@ -0,0 +1,45 @@
module Gws::Addon::Memo::MessageSort
extend ActiveSupport::Concern
extend SS::Addon

included do
field :gws_memo_message_sort, type: Hash, default: {}
end

public

def memo_message_sort_hash(folder, sort, order)
return @sort_hash if @sort_hash

order = (order == "1") ? 1 : -1
if sort.present? && %w(from_member_name to_member_name subject priority send_date size).include?(sort)
@sort_hash = { sort => order, "updated" => -1 }
else
@sort_hash = gws_memo_message_sort.dig(folder.site_id, folder.folder_path.gsub(/\./, "_"))
@sort_hash ||= { "send_date" => -1, "updated" => -1 }
end
self.gws_memo_message_sort[folder.site_id] ||= {}
self.gws_memo_message_sort[folder.site_id][folder.folder_path.gsub(/\./, "_")] = @sort_hash
update

@sort_hash
end

def memo_message_sort_query(sort_hash, name)
if sort_hash[name] == -1
{ "sort" => name, "order" => 1 }
else
{ "sort" => name, "order" => -1 }
end
end

def memo_message_sort_icon(sort_hash, name)
if sort_hash[name] == -1
'<i class="material-icons md-18">&#xE313;</i>'
elsif sort_hash[name] == 1
'<i class="material-icons md-18">&#xE316;</i>'
else
'<i class="material-icons md-18" style="visibility: hidden;">&#xE313;</i>'
end
end
end
9 changes: 9 additions & 0 deletions app/models/concerns/gws/model/memo/message.rb
Expand Up @@ -22,6 +22,9 @@ module Memo::Message
field :send_date, type: DateTime
field :import_info, type: Hash, default: nil

field :to_member_name, type: String, default: ''
field :from_member_name, type: String, default: ''

embeds_ids :to_members, class_name: "Gws::User"
embeds_ids :cc_members, class_name: "Gws::User"
embeds_ids :bcc_members, class_name: "Gws::User"
Expand All @@ -39,6 +42,7 @@ module Memo::Message
before_validation :set_send_date
before_validation :set_path
before_validation :set_size
before_validation :set_member_name

validates :subject, presence: true

Expand Down Expand Up @@ -103,6 +107,11 @@ def set_size
self.size += files.pluck(:size).sum if files.present?
end

def set_member_name
self.from_member_name = @cur_user.long_name if @cur_user
self.to_member_name = display_to.join("; ")
end

def set_member_ids
self.member_ids = (to_member_ids + cc_member_ids + bcc_member_ids).uniq
self.member_ids = member_ids - deleted.keys.map(&:to_i)
Expand Down
1 change: 1 addition & 0 deletions app/models/gws/user.rb
Expand Up @@ -4,6 +4,7 @@ class Gws::User
include Gws::SitePermission
include Gws::Addon::User::PublicDuty
include Gws::Addon::User::CustomForm
include Gws::Addon::Memo::MessageSort
include Gws::Addon::Role
include SS::Addon::UserGroupHistory
include Gws::Addon::History
Expand Down
42 changes: 42 additions & 0 deletions app/views/gws/memo/messages/_list_head.html.erb
Expand Up @@ -58,6 +58,48 @@
<button class="btn trash-all"><%= t 'gws/memo/message.links.trash' %></button>
<% end %>

<div class="dropdown dropdown-toggle gws-memo-dropdown">
<button class="btn">
並び順え
<i class="material-icons md-13">&#xE313;</i>
</button>
<ul class="dropdown-menu">
<% if params[:folder] == 'INBOX.Sent' %>
<li>
<a class="set-star-all" href="<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "to_member_name").to_query %>">
<%= @model.t(:to) %><%== @cur_user.memo_message_sort_icon(@sort_hash, "to_member_name") %>
</a>
</li>
<% else %>
<li>
<a class="set-star-all" href="<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "from_member_name").to_query %>">
<%= @model.t(:from) %><%== @cur_user.memo_message_sort_icon(@sort_hash, "from_member_name") %>
</a>
</li>
<% end %>
<li>
<a class="set-star-all" href="<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "subject").to_query %>">
<%= @model.t :subject %><%== @cur_user.memo_message_sort_icon(@sort_hash, "subject") %>
</a>
</li>
<li>
<a class="set-star-all" href="<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "priority").to_query %>">
<%= @model.t :priority %><%== @cur_user.memo_message_sort_icon(@sort_hash, "priority") %>
</a>
</li>
<li>
<a class="set-star-all" href="<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "send_date").to_query %>">
<%= @model.t :display_send_date %><%== @cur_user.memo_message_sort_icon(@sort_hash, "send_date") %>
</a>
</li>
<li>
<a class="set-star-all" href="<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "size").to_query %>">
<%= @model.t :size %><%== @cur_user.memo_message_sort_icon(@sort_hash, "size") %>
</a>
</li>
</ul>
</div>

<div class="dropdown dropdown-toggle gws-memo-dropdown">
<button class="btn">
<%= t 'gws/memo/message.links.etc' %> <i class="material-icons md-13">&#xE313;</i>
Expand Down
42 changes: 36 additions & 6 deletions app/views/gws/memo/messages/index.html.erb
@@ -1,17 +1,47 @@
<%= jquery do %>
<% if @cur_folder.path == "INBOX.Sent" %>
$(".list-item-head .to").on("click", function() {
location.href = "<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "to_member_name").to_query %>";
return false;
});
<% else %>
$(".list-item-head .from").on("click", function() {
location.href = "<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "from_member_name").to_query %>";
return false;
});
<% end %>
$(".list-item-head .title").on("click", function() {
location.href = "<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "subject").to_query %>";
return false;
});
$(".list-item-head .priority").on("click", function() {
location.href = "<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "priority").to_query %>";
return false;
});
$(".list-item-head .datetime").on("click", function() {
location.href = "<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "send_date").to_query %>";
return false;
});
$(".list-item-head .size").on("click", function() {
location.href = "<%= gws_memo_messages_path(folder: @cur_folder.folder_path) %>?<%= @cur_user.memo_message_sort_query(@sort_hash, "size").to_query %>";
return false;
});
<% end %>

<div class="index">
<%= render file: '_list_head' %>
<ul class="list-items ss-messages gws-memos">
<li class="list-item-head">
<div class="head">
<% if @cur_folder.path == "INBOX.Sent" %>
<span class="field to"><%= @model.t :to %></span>
<span class="field to"><%= @model.t :to %><%== @cur_user.memo_message_sort_icon(@sort_hash, "to_member_name") %></span>
<% else %>
<span class="field from"><%= @model.t :from %></span>
<span class="field from"><%= @model.t :from %><%== @cur_user.memo_message_sort_icon(@sort_hash, "from_member_name") %></span>
<% end %>
<span class="field title"><%= @model.t :subject %></span>
<span class="field priority"><%= @model.t :priority %></span>
<span class="field datetime"><%= @model.t :display_send_date %></span>
<span class="field size"><%= @model.t :size %></span>
<span class="field title"><%= @model.t :subject %><%== @cur_user.memo_message_sort_icon(@sort_hash, "subject") %></span>
<span class="field priority"><%= @model.t :priority %><%== @cur_user.memo_message_sort_icon(@sort_hash, "priority") %></span>
<span class="field datetime"><%= @model.t :display_send_date %><%== @cur_user.memo_message_sort_icon(@sort_hash, "send_date") %></span>
<span class="field size"><%= @model.t :size %><%== @cur_user.memo_message_sort_icon(@sort_hash, "size") %></span>
</div>
</li>

Expand Down
1 change: 1 addition & 0 deletions lib/migrations/gws/20180124000000_fix_gws_memo_messages.rb
@@ -1,3 +1,4 @@
# set to_member_ids
class SS::Migration20180124000000
def change
Gws::Memo::Message.each do |message|
Expand Down
13 changes: 13 additions & 0 deletions lib/migrations/gws/20180201000000_fix_gws_memo_messages.rb
@@ -0,0 +1,13 @@
# set member name for sort feature
class SS::Migration20180201000000
def change
Gws::Memo::Message.each do |message|
if message.user && message.from_member_name.blank?
message.set(from_member_name: message.user.long_name)
end
if message.display_to.present? && message.to_member_name.blank?
message.set(to_member_name: message.display_to.join("; "))
end
end
end
end

0 comments on commit ff007ba

Please sign in to comment.