Skip to content

Commit

Permalink
[modify] sns poster : line and twitter (#3908)
Browse files Browse the repository at this point in the history
* [modify] line poster (#41)

* [fix] line poster locale

* [modify] line poster : add node setting

* [add] line text message placeholder

* [modify] line_poster : line_text_message validation

* [modify] sns post confirmation

* [fix] line post : validate name when line post enabled

* [modify] remove line_edit_auto_post

* [remove] twitter edit_auto_post

* [modify] line post validation

* [modify] sns poster : twitter posted_at

* [modify] snd poster to twitter poster

* [modify] line post when merge branch

* [modify] skip_sns_post

* [fix] remove edit_auto_post

* [fix] line post validation

* [modify] logging when merge_to_master failed

* [modify] sns post log

* [modify] reset line posted

* [fix] spec failure

* [fix] locale

* [fix] remove deleted_twitter_posted

* [modify] sns post log views

* [modify] line reset_posted permission

* [fix] spec/factories/gws/user_presences.rb

* [modify] spec

* [fix] spec failure

* [modify] spec
  • Loading branch information
itowtips committed Jun 7, 2021
1 parent 2be8b5b commit f4fe648
Show file tree
Hide file tree
Showing 68 changed files with 3,013 additions and 317 deletions.
3 changes: 3 additions & 0 deletions Gemfile
Expand Up @@ -98,6 +98,9 @@ gem 'unf'
gem 'faraday'
gem 'elasticsearch'

# line
gem 'line-bot-api'

group :development, :test do
gem 'dotenv-rails'
gem 'capybara', require: false
Expand Down
2 changes: 2 additions & 0 deletions Gemfile.lock
Expand Up @@ -297,6 +297,7 @@ GEM
kramdown (~> 2.0)
levenshtein (0.2.2)
libv8 (7.3.492.27.1)
line-bot-api (1.19.0)
link_header (0.0.8)
liquid (4.0.1)
listen (3.1.5)
Expand Down Expand Up @@ -692,6 +693,7 @@ DEPENDENCIES
kramdown
kramdown-parser-gfm
levenshtein
line-bot-api
liquid
mail-iso-2022-jp
marcel
Expand Down
1 change: 1 addition & 0 deletions app/assets/javascripts/cms/lib/form.js.erb
Expand Up @@ -29,6 +29,7 @@ this.Cms_Form = (function () {
// handle Form_Alert
Form_Alert.addValidation(Form_Alert.clonedName);
Form_Alert.addValidation(Form_Alert.closeConfirmation);
Form_Alert.addValidation(Form_Alert.snsPostConfirmation);
if(Cms_Form.options.check.syntax) {
Form_Alert.addAsyncValidation(Form_Alert.asyncValidateSyntaxCheck);
}
Expand Down
15 changes: 15 additions & 0 deletions app/assets/javascripts/cms/lib/form_alert.js.erb
Expand Up @@ -159,6 +159,21 @@ this.Form_Alert = (function () {
}
};

Form_Alert.snsPostConfirmation = function (form, submit) {
var addonName, messages, f;
f = $(submit).data("sns-post-confirmation");

messages = [];
if (f) {
messages = f();
}

addonName = '<%= I18n.t("cms.sns_post") %>';
$.each(messages, function() {
Form_Alert.add(addonName, null, this);
});
}

Form_Alert.add = function (addon, ele, msg) {
var base;
(base = Form_Alert.alerts)[addon] || (base[addon] = []);
Expand Down
14 changes: 14 additions & 0 deletions app/assets/stylesheets/ss/_pc_mb.scss
Expand Up @@ -3492,3 +3492,17 @@ body.ss-ajax-in-iframe {
cursor: help;
}
}

.sns-post-confirm {
background: #f3f3f3;
padding: 2px;
border-radius: 4px;
h2 {
font-weight: bold;
margin-top: 5px;
margin-left: 10px;
}
ul li {
list-style: inherit;
}
}
15 changes: 15 additions & 0 deletions app/controllers/cms/apis/sns_poster_controller.rb
@@ -0,0 +1,15 @@
class Cms::Apis::SnsPosterController < ApplicationController
include Cms::BaseFilter
include Cms::CrudFilter

model ::Cms::Page

public

def line_reset
set_item
@item = @item.becomes_with_route
@item.reset_line_posted if @item.respond_to?(:reset_line_posted)
redirect_to @item.private_show_path, notice: t("ss.notice.reset_posted")
end
end
14 changes: 14 additions & 0 deletions app/controllers/cms/sns_post/logs_controller.rb
@@ -0,0 +1,14 @@
class Cms::SnsPost::LogsController < ApplicationController
include Cms::BaseFilter
include Cms::CrudFilter

model Cms::SnsPostLog::Base

navi_view "cms/sns_post/main/navi"

private

def set_crumbs
@crumbs << [t("cms.sns_post"), cms_sns_post_logs_path]
end
end
1 change: 1 addition & 0 deletions app/controllers/concerns/cms/base_filter.rb
Expand Up @@ -8,6 +8,7 @@ module Cms::BaseFilter
helper Cms::NodeHelper
helper Cms::FormHelper
helper Map::MapHelper
helper Cms::SnsHelper
before_action :validate_cms
before_action :set_cms_assets
before_action :set_site
Expand Down
46 changes: 46 additions & 0 deletions app/helpers/cms/sns_helper.rb
@@ -0,0 +1,46 @@
module Cms::SnsHelper
def show_line_post_confirm?
return false if !@item.class.include?(Cms::Addon::LinePoster)

site = @item.site
item = (@item.respond_to?(:master) && @item.master) ? @item.master : @item

return false if !site.line_token_enabled?
return false if @item.line_auto_post != "active"
return false if item.line_posted.present?
true
end

def show_twitter_post_confirm?
return false if !@item.class.include?(Cms::Addon::TwitterPoster)

item = (@item.respond_to?(:master) && @item.master) ? @item.master : @item

return false if !@item.use_twitter_post?
return false if item.twitter_posted.present?
true
end

def render_sns_post_confirm
messages = []
if show_line_post_confirm?
messages << t("cms.confirm.line_post_enabled")
end
if show_twitter_post_confirm?
messages << t("cms.confirm.twitter_post_enabled")
end

return "" if messages.blank?

h = []
h << "<div class=\"sns-post-confirm\">"
h << "<h2>#{t("cms.confirm.when_publish")}</h2>"
h << "<ul>"
messages.each do |message|
h << ("<li>" + message + "</li>")
end
h << "</div>"

return h.join("\n")
end
end
3 changes: 2 additions & 1 deletion app/jobs/concerns/chorg/mongoid_support.rb
Expand Up @@ -47,7 +47,8 @@ def with_entities(models, scope = {})
entity_user.try(:cur_site=, @cur_site)
entity.try(:cur_user=, entity_user)

entity.try(:skip_sns_post=, true)
entity.try(:skip_twitter_post=, true)
entity.try(:skip_line_post=, true)
def entity.post_to_line; end
def entity.post_to_twitter; end

Expand Down
3 changes: 2 additions & 1 deletion app/models/article/node.rb
Expand Up @@ -10,7 +10,8 @@ class Page
include Cms::Addon::NodeSetting
include Cms::Addon::Meta
include Cms::Addon::EditorSetting
include Cms::Addon::NodeAutoPostSetting
include Cms::Addon::NodeTwitterPostSetting
include Cms::Addon::NodeLinePostSetting
include Event::Addon::PageList
include Cms::Addon::Form::Node
include Category::Addon::Setting
Expand Down
3 changes: 2 additions & 1 deletion app/models/article/page.rb
Expand Up @@ -5,7 +5,8 @@ class Article::Page
include Workflow::Addon::Branch
include Workflow::Addon::Approver
include Cms::Addon::Meta
include Cms::Addon::SnsPoster
include Cms::Addon::TwitterPoster
include Cms::Addon::LinePoster
include Gravatar::Addon::Gravatar
include Cms::Addon::Thumb
include Cms::Addon::RedirectLink
Expand Down
9 changes: 6 additions & 3 deletions app/models/cms/node.rb
Expand Up @@ -4,7 +4,8 @@ class Cms::Node
include Cms::Addon::NodeSetting
include Cms::Addon::EditorSetting
include Cms::Addon::GroupPermission
include Cms::Addon::NodeAutoPostSetting
include Cms::Addon::NodeTwitterPostSetting
include Cms::Addon::NodeLinePostSetting
include Cms::Addon::ForMemberNode

index({ site_id: 1, filename: 1 }, { unique: true })
Expand All @@ -20,7 +21,8 @@ class Node
include Cms::Addon::NodeSetting
include Cms::Addon::Meta
include Cms::Addon::EditorSetting
include Cms::Addon::NodeAutoPostSetting
include Cms::Addon::NodeTwitterPostSetting
include Cms::Addon::NodeLinePostSetting
include Cms::Addon::NodeList
include Cms::Addon::ChildList
include Cms::Addon::ForMemberNode
Expand All @@ -36,7 +38,8 @@ class Page
include Cms::Addon::NodeSetting
include Cms::Addon::Meta
include Cms::Addon::EditorSetting
include Cms::Addon::NodeAutoPostSetting
include Cms::Addon::NodeTwitterPostSetting
include Cms::Addon::NodeLinePostSetting
include Event::Addon::PageList
include Cms::Addon::Form::Node
include Cms::Addon::Release
Expand Down
3 changes: 2 additions & 1 deletion app/models/cms/page.rb
Expand Up @@ -4,7 +4,8 @@ class Cms::Page
include Workflow::Addon::Branch
include Workflow::Addon::Approver
include Cms::Addon::Meta
include Cms::Addon::SnsPoster
include Cms::Addon::TwitterPoster
include Cms::Addon::LinePoster
include Gravatar::Addon::Gravatar
include Cms::Addon::Thumb
include Cms::Addon::Body
Expand Down
2 changes: 1 addition & 1 deletion app/models/cms/site.rb
Expand Up @@ -9,7 +9,7 @@ class Cms::Site
include SS::Addon::KanaSetting
include SS::Addon::FacebookSetting
include SS::Addon::TwitterSetting
include SS::Addon::SiteAutoPostSetting
include SS::Addon::LineSetting
include SS::Addon::FileSetting
include SS::Addon::MailSetting
include SS::Addon::ApproveSetting
Expand Down
63 changes: 63 additions & 0 deletions app/models/cms/sns_post_log/base.rb
@@ -0,0 +1,63 @@
class Cms::SnsPostLog::Base
extend SS::Translation
include SS::Document
include SS::Reference::Site
include Cms::SitePermission

store_in collection: 'cms_sns_post_logs'

set_permission_name "cms_tools", :use

field :name, type: String
field :action, type: String, default: "unknown"
field :state, type: String, default: "error"
field :error, type: String

belongs_to :page, class_name: "Cms::Page"

before_validation :set_name
validates :page_id, presence: true

default_scope -> { order_by(created: -1) }

index({ created: -1 })

def type
"base"
end

def state_options
I18n.t("cms.options.sns_post_log_state").map { |k, v| [v, k] }
end

def type_options
I18n.t("cms.options.sns_post_log_type").map { |k, v| [v, k] }
end

def set_name
self.name = "[#{label(:state)}] #{label(:type)} #{created.strftime("%Y/%m/%d %H:%M")}"
end

class << self
def create_with(page)
log = self.new
log.site = page.site
log.page = page
yield(log)
log.save
end

def search(params)
criteria = self.where({})
return criteria if params.blank?

if params[:name].present?
criteria = criteria.search_text params[:name]
end
if params[:keyword].present?
criteria = criteria.keyword_in params[:keyword], :name, :body
end
criteria
end
end
end
13 changes: 13 additions & 0 deletions app/models/cms/sns_post_log/line.rb
@@ -0,0 +1,13 @@
class Cms::SnsPostLog::Line < Cms::SnsPostLog::Base
extend SS::Translation
include SS::Document
include Cms::Reference::Site

field :messages, type: Array, default: []
field :response_code, type: String
field :response_body, type: String

def type
"line"
end
end
14 changes: 14 additions & 0 deletions app/models/cms/sns_post_log/twitter.rb
@@ -0,0 +1,14 @@
class Cms::SnsPostLog::Twitter < Cms::SnsPostLog::Base
extend SS::Translation
include SS::Document
include Cms::Reference::Site

field :message, type: String
field :media_files, type: Array, default: []
field :destroy_post_ids, type: Array, default: []
field :response_tweet, type: String

def type
"twitter"
end
end

0 comments on commit f4fe648

Please sign in to comment.