eric_weixin 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +6 -1
  3. data/app/assets/javascripts/eric_weixin/application.js +1 -0
  4. data/app/assets/javascripts/eric_weixin/cms/base.js +6 -5
  5. data/app/controllers/eric_weixin/application_controller.rb +98 -0
  6. data/app/controllers/eric_weixin/cms/base_controller.rb +1 -1
  7. data/app/controllers/eric_weixin/cms/weixin/media_articles_controller.rb +73 -0
  8. data/app/controllers/eric_weixin/cms/weixin/media_news_controller.rb +175 -0
  9. data/app/controllers/eric_weixin/cms/weixin/media_resources_controller.rb +68 -0
  10. data/app/controllers/eric_weixin/wz/pays_controller.rb +15 -0
  11. data/app/controllers/eric_weixin/wz/weixin_controller.rb +2 -2
  12. data/app/helpers/eric_weixin/application_helper.rb +6 -0
  13. data/app/helpers/eric_weixin/cms/weixin/public_accounts_helper.rb +3 -3
  14. data/app/models/eric_weixin/access_token.rb +1 -0
  15. data/app/models/eric_weixin/media_article.rb +53 -0
  16. data/app/models/eric_weixin/media_article_news.rb +6 -0
  17. data/app/models/eric_weixin/media_news.rb +216 -0
  18. data/app/models/eric_weixin/media_resource.rb +172 -0
  19. data/app/models/eric_weixin/public_account.rb +9 -0
  20. data/app/views/eric_weixin/cms/weixin/media_articles/_media_article.html.erb +131 -0
  21. data/app/views/eric_weixin/cms/weixin/media_articles/_select_pic.html.erb +78 -0
  22. data/app/views/eric_weixin/cms/weixin/media_articles/edit.html.erb +4 -0
  23. data/app/views/eric_weixin/cms/weixin/media_articles/index.html.erb +31 -0
  24. data/app/views/eric_weixin/cms/weixin/media_articles/new.html.erb +15 -0
  25. data/app/views/eric_weixin/cms/weixin/media_news/_select_article.html.erb +90 -0
  26. data/app/views/eric_weixin/cms/weixin/media_news/_select_user.html.erb +8 -0
  27. data/app/views/eric_weixin/cms/weixin/media_news/_will_send_article.html.erb +53 -0
  28. data/app/views/eric_weixin/cms/weixin/media_news/new.html.erb +284 -0
  29. data/app/views/eric_weixin/cms/weixin/media_resources/_media_resource.html.erb +62 -0
  30. data/app/views/eric_weixin/cms/weixin/media_resources/edit.html.erb +20 -0
  31. data/app/views/eric_weixin/cms/weixin/media_resources/index.html.erb +49 -0
  32. data/app/views/eric_weixin/cms/weixin/media_resources/new.html.erb +4 -0
  33. data/app/views/eric_weixin/cms/weixin/url_encodes/_new.html.erb +6 -6
  34. data/app/views/eric_weixin/wz/pays/pay_fail.html.erb +2 -0
  35. data/app/views/eric_weixin/wz/pays/pay_ok.html.erb +2 -0
  36. data/app/views/eric_weixin/wz/pays/prepay.html.erb +49 -0
  37. data/app/views/layouts/eric_weixin/cms/base.html.erb +1 -1
  38. data/app/views/layouts/eric_weixin/wz/pays.html.erb +11 -0
  39. data/config/initializers/assets.rb +1 -1
  40. data/config/initializers/inflections.rb +19 -0
  41. data/config/routes.rb +20 -6
  42. data/config/tinymce.yml +11 -0
  43. data/db/migrate/20150813080541_add_mch_id_to_weixin_public_accounts.rb +5 -0
  44. data/db/migrate/20150817105643_alert_weixin_reply_message_rules_s_reply_message_length.rb +5 -0
  45. data/db/migrate/20150817143407_add_mch_key_to_weixin_public_account.rb +5 -0
  46. data/db/migrate/20150818090435_create_weixin_media_resources.rb +13 -0
  47. data/db/migrate/20150818094553_create_weixin_media_articles.rb +17 -0
  48. data/db/migrate/20150818095654_create_weixin_media_news.rb +18 -0
  49. data/db/migrate/20150818100348_create_weixin_media_articles_news.rb +11 -0
  50. data/db/migrate/20150904045253_add_host_name_to_public_account.rb +5 -0
  51. data/lib/eric_weixin.rb +2 -0
  52. data/lib/eric_weixin/modules/ip.rb +2 -0
  53. data/lib/eric_weixin/modules/pay.rb +31 -0
  54. data/lib/eric_weixin/version.rb +1 -1
  55. metadata +38 -2
@@ -6,6 +6,15 @@ class EricWeixin::PublicAccount < ActiveRecord::Base
6
6
  has_many :two_dimension_codes, :class_name => 'TwoDimensionCode', foreign_key: "weixin_public_account_id"
7
7
  has_one :access_token, :class_name => 'AccessToken', foreign_key: "public_account_id"
8
8
  has_many :customs_service_records, class_name: 'CustomsServiceRecord', foreign_key: "weixin_public_account_id"
9
+
10
+ #根据微信号名称获取微信账号相关信息
11
+ # ::EricWeixin::PublicAccount.get_public_account_by_name 'dfxt'
12
+ def self.get_public_account_by_name name
13
+ accounts = ::EricWeixin::PublicAccount.where name: name
14
+ return nil if accounts.blank?
15
+ accounts[0]
16
+ end
17
+
9
18
  #
10
19
  # def self.get_secret app_id
11
20
  # account = ::EricWeixin::PublicAccount.where(weixin_app_id: app_id).first
@@ -0,0 +1,131 @@
1
+ <% session_content = get_session_content(params[:session_content_id])[:article] || {} rescue {} %>
2
+
3
+ <%= tinymce_assets %>
4
+ <div class="row">
5
+ <div class="columns small-2 text-right">
6
+ <label class="inline">选择公众号</label>
7
+ </div>
8
+ <div class="columns small-5 end">
9
+ <%= select_tag "article[public_account_id]", options_from_collection_for_select(::EricWeixin::PublicAccount.all, 'id', 'name', get_show_value(@media_article.public_account_id, v1:session_content[:public_account_id], v2:@media_article.public_account_id)) %>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="row">
14
+ <div class="columns small-2 text-right">
15
+ <label class="inline">图文标签</label>
16
+ </div>
17
+ <div class="columns small-5 end">
18
+ <%= text_field_tag "article[tag]", (get_show_value(@media_article.tag, v1:session_content[:tag]) ) %>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="row">
23
+ <div class="columns small-2 text-right">
24
+ <label class="inline">请选择缩略图</label>
25
+ </div>
26
+ <div class="columns small-5 end">
27
+ <img id="suoluetu" src="<%= ::EricWeixin::MediaResource.find_by_id(get_show_value(@media_article.thumb_media_id, v1:session_content[:thumb_media_id])).local_link rescue '' %>" width="100" height="100">
28
+ </div><%= link_to '选择封面', '#', class: 'button tiny', 'data-reveal-id' => 'AddPosterModal' %>
29
+ </div>
30
+ <br/>
31
+ <%= hidden_field_tag "article[thumb_media_id]", (get_show_value(@media_article.thumb_media_id, v1:session_content[:thumb_media_id]) rescue '') %>
32
+
33
+ <div class="row">
34
+ <div class="columns small-2 text-right">
35
+ <label class="inline">作者</label>
36
+ </div>
37
+ <div class="columns small-5 end">
38
+ <%= text_field_tag "article[author]", (get_show_value(@media_article.author, v1:session_content[:author]) rescue '') %>
39
+ </div>
40
+ </div>
41
+
42
+ <div class="row">
43
+ <div class="columns small-2 text-right">
44
+ <label class="inline">标题</label>
45
+ </div>
46
+ <div class="columns small-5 end">
47
+ <%= text_field_tag "article[title]", (get_show_value(@media_article.title, v1:session_content[:title]) rescue '') %>
48
+ </div>
49
+ </div>
50
+
51
+ <div class="row">
52
+ <div class="columns small-2 text-right">
53
+ <label class="inline">摘要</label>
54
+ </div>
55
+ <div class="columns small-5 end">
56
+ <%= text_field_tag "article[digest]", (get_show_value(@media_article.digest, v1:session_content[:digest]) rescue '') %>
57
+ </div>
58
+ </div>
59
+
60
+ <div class="row">
61
+ <div class="columns small-2 text-right">
62
+ <label class="inline"></label>
63
+ </div>
64
+ <div class="columns small-5 end">
65
+ <%= check_box_tag "article[show_cover_pic]", true , (get_show_value((@media_article.show_cover_pic==true ? 'true' : 'false'), v1:session_content[:show_cover_pic])=='true' rescue '') %>
66
+ <label class="inline text-left">是否在正文显示封面</label>
67
+ </div>
68
+ </div>
69
+
70
+ <div class="row">
71
+ <div class="columns small-2 text-right">
72
+ <label class="inline"></label>
73
+ </div>
74
+ <div class="columns small-5 end">
75
+ <%= check_box_tag "article[is_first_article]", true , (get_show_value((@media_article.is_first_article==true ? 'true' : 'false'), v1:session_content[:is_first_article])=='true' rescue '') %>
76
+ <label class="inline">是否首图</label>
77
+ </div>
78
+ </div>
79
+
80
+ <div class="row">
81
+ <div class="columns small-2 end text-right">
82
+ <label class="inline">内容</label>
83
+ </div>
84
+ </div>
85
+
86
+ <div class="row">
87
+ <div class="columns small-12">
88
+ <%= text_area_tag "article[content]", (get_show_value(@media_article.content, v1:session_content[:content]) rescue ''), :class => "tinymce", :rows => 40, :cols => 120 %>
89
+ </div>
90
+ </div>
91
+
92
+ <br/>
93
+
94
+ <div class="row">
95
+ <div class="columns small-2 text-right">
96
+ <label class="inline">阅读原文链接</label>
97
+ </div>
98
+ <div class="columns small-10 end">
99
+ <%= text_field_tag "article[content_source_url]", (get_show_value(@media_article.content_source_url, v1:session_content[:content_source_url]) rescue '') %>
100
+ </div>
101
+ </div>
102
+
103
+ <div class="row">
104
+ <div class="columns small-6 text-center">
105
+ <%= submit_tag '提交', class: 'button tiny' %>
106
+ </div>
107
+ <div class="columns small-6 text-center">
108
+ <%= submit_tag '预览', class: 'button tiny' %>
109
+ </div>
110
+ </div>
111
+
112
+ <script language="javascript">
113
+ tinyMCE.init({
114
+ selector: '#article_content',
115
+ plugins : 'advlist code colorpicker fullscreen image link paste preview print save lists table wordcount textcolor',
116
+ toolbar1: "forecolor backcolor newdocument bold italic underline strikethrough alignleft",
117
+ toolbar2: "styleselect formatselect fontselect fontsizeselect cut copy paste",
118
+ toolbar3: "indent blockquote undo redo removeformat subscript superscript hr link unlink image charmap pastetext print preview anchor pagebreak spellchecker searchreplace visualblocks visualchars",
119
+ toolbar4: "code fullscreen insertdatetime media nonbreaking save cancel table ltr rtl emoticons template forecolor backcolor insertfile aligncenter alignright alignjustify bullist numlist outdent"
120
+ });
121
+ </script>
122
+
123
+
124
+
125
+ <!--弹出选择缩略图模式框-->
126
+ <div id="AddPosterModal" class="reveal-modal" data-reveal>
127
+ <h3>选择封面</h3>
128
+ <div class="panel callout radius" id="select_pic_div">
129
+ <%= render partial: 'select_pic' %>
130
+ </div>
131
+ </div>
@@ -0,0 +1,78 @@
1
+ <% @pics.each_with_index do |pic, index| %>
2
+ <% if index%6==0 %>
3
+ <div class="row">
4
+ <% end %>
5
+ <div class="columns small-2 <%= @pics.count == index+1 ? 'end' : '' %>">
6
+ <label class="inline"><span><%= radio_button_tag 'picture', pic.id, false, onchange: "change_thumb_media_id('#{pic.id}','#{pic.local_link}')" %></span>
7
+ <img src='<%= pic.local_link %>' width="100" height="100"></label>
8
+ </div>
9
+ <% if index%6==5 || @pics.count == index+1 %>
10
+ </div>
11
+ <% end %>
12
+ <% end %>
13
+ <div class="row">
14
+ <div class="columns small-12 text-right">
15
+ <% if @current_page == 1 %>
16
+ <%= "上一页" %>
17
+ <% else %>
18
+ <%= link_to '上一页',"javascript:pre_page(#{@current_page||1})", disabled: (@current_page ==1 ? 'false' : 'true') %>
19
+ <% end %>
20
+
21
+ <% if @current_page == @total_page %>
22
+ <%= "下一页" %>
23
+ <% else %>
24
+ <%= link_to '下一页',"javascript:next_page(#{@current_page||1})" %>
25
+ <% end %>
26
+ <%= "当前第#{@current_page||1}页 共#{@total_page}页" %>
27
+ </div>
28
+ </div>
29
+ <div class="row">
30
+ <div class="columns small-2 small-offset-5 text-center">
31
+ <%= link_to '确定', 'javascript:close_modal()', class: 'text-center button tiny' %>
32
+ </div>
33
+ </div>
34
+
35
+ <script language="javascript">
36
+ function change_thumb_media_id(thumb_media_id, link) {
37
+ $("#article_thumb_media_id").val(thumb_media_id);
38
+ $("#suoluetu").attr('src',link);
39
+ }
40
+
41
+ function close_modal(){
42
+ $('#AddPosterModal').foundation('reveal', 'close');
43
+ }
44
+
45
+ function pre_page(current_page){
46
+ target_page = current_page - 1;
47
+ if(target_page == 0){
48
+ target_page = 1;
49
+ }
50
+ $.ajax({
51
+ url: '/eric_weixin/cms/weixin/media_articles/select_pic',
52
+ type: 'get',
53
+ data: {target_page: target_page},
54
+ async: false
55
+ }).done(
56
+ function(result){
57
+ $("#select_pic_div").html(result);
58
+ }
59
+ );
60
+ }
61
+
62
+ function next_page(current_page){
63
+ target_page = current_page + 1;
64
+ if(target_page > <%= @total_page %>){
65
+ target_page = <%= @total_page %>;
66
+ }
67
+ $.ajax({
68
+ url: '/eric_weixin/cms/weixin/media_articles/select_pic',
69
+ type: 'get',
70
+ data: {target_page: target_page},
71
+ async: false
72
+ }).done(
73
+ function(result){
74
+ $("#select_pic_div").html(result);
75
+ }
76
+ );
77
+ }
78
+ </script>
@@ -0,0 +1,4 @@
1
+ <h3 class="text-center">编辑图文</h3>
2
+ <%= form_tag "/eric_weixin/cms/weixin/media_articles/#{@media_article.id}", method: :patch do %>
3
+ <%= render 'media_article' %>
4
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <h3 class="text-center">微信素材管理</h3>
2
+ <%= form_tag '/eric_weixin/cms/weixin/media_articles/', method: :get do %>
3
+ <div class="row">
4
+ <div class="columns small-2 text-right">
5
+ <label class="inline">图文标题</label>
6
+ </div>
7
+ <div class="columns small-2">
8
+ <%= text_field_tag :title, params[:title] %>
9
+ </div>
10
+ <div class="columns small-4">
11
+ <%= submit_tag '查询', class: 'button tiny' %>
12
+ </div>
13
+ </div>
14
+ <% end %>
15
+
16
+ <table>
17
+ <thead>
18
+ <th>图文名称</th><th>创建时间</th><th>原文链接</th><th>首图</th><th>摘要</th><th>操作</th>
19
+ </thead>
20
+ <% @media_articles.each do |media_article| %>
21
+ <tr>
22
+ <td><%= media_article.title %></td>
23
+ <td><%= media_article.created_at.chinese_format %></td>
24
+ <td><%= media_article.content_source_url %></td>
25
+ <td><%= media_article.is_first_article %></td>
26
+ <td><%= media_article.digest %></td>
27
+ <td><%= link_to '编辑', "/eric_weixin/cms/weixin/media_articles/#{media_article.id}/edit", class: 'button tiny' %></td>
28
+ </tr>
29
+ <% end %>
30
+ </table>
31
+ <%= will_paginate @media_articles %>
@@ -0,0 +1,15 @@
1
+
2
+
3
+ <h3 class="text-center">新增图文</h3>
4
+
5
+ <%= form_tag '/eric_weixin/cms/weixin/media_articles', method: :post do %>
6
+
7
+ <%= render 'media_article' %>
8
+
9
+ <% end %>
10
+
11
+
12
+
13
+
14
+
15
+
@@ -0,0 +1,90 @@
1
+ <h5>筛选供使用的文章</h5>
2
+ <table>
3
+ <% @media_articles.each do |media_article| %>
4
+ <tr>
5
+ <td><%= media_article.title %></td>
6
+ <td><img src="<%= media_article.media_resource.local_link %>" width="20" height="20"></td>
7
+ <td><%= media_article.is_first_article ? '首图文' : '' %></td>
8
+ <td><%= link_to '选中️', "javascript:select_this_to_target_news(#{media_article.id})" %></td>
9
+ </tr>
10
+ <% end %>
11
+ </table>
12
+ <div class="row">
13
+ <div class="columns small-12 text-right">
14
+ <% if @current_page == 1 %>
15
+ <%= "上一页" %>
16
+ <% else %>
17
+ <%= link_to '上一页',"javascript:pre_page(#{@current_page||1})", disabled: (@current_page ==1 ? 'false' : 'true') %>
18
+ <% end %>
19
+
20
+ <% if @current_page == @total_page %>
21
+ <%= "下一页" %>
22
+ <% else %>
23
+ <%= link_to '下一页',"javascript:next_page(#{@current_page||1})" %>
24
+ <% end %>
25
+ <%= "当前第#{@current_page||1}页 共#{@total_page}页" %>
26
+ </div>
27
+ </div>
28
+ <script language="javascript">
29
+
30
+ function select_this_to_target_news(media_article_id){
31
+ existed_article_ids = $("#will_send_article_msg").val();
32
+ new_article_id = media_article_id;
33
+ $.ajax({
34
+ url: "/eric_weixin/cms/weixin/media_news/will_send_articles",
35
+ type: 'get',
36
+ data: {existed_article_ids: existed_article_ids, new_article_id: new_article_id}
37
+ }).done(
38
+ function(result){
39
+ if(result == "existed"){
40
+ alert("该文章已经在该图文里了");
41
+ } else {
42
+ $("#will_send_content").html(result);
43
+ }
44
+ }
45
+ );
46
+ }
47
+
48
+
49
+ function pre_page(current_page){
50
+ tag = $("#condition_tag").val();
51
+ start_date = $("#condition_start_date").val();
52
+ end_date = $("#condition_end_date").val();
53
+ target_page = current_page - 1;
54
+ if(target_page == 0){
55
+ target_page = 1;
56
+ }
57
+
58
+
59
+ $.ajax({
60
+ url: '/eric_weixin/cms/weixin/media_news/query_media_articles',
61
+ type: 'get',
62
+ data: {tag: tag, start_date: start_date, end_date: end_date, page: target_page},
63
+ async: false
64
+ }).done(
65
+ function(result){
66
+ $("#query_result").html(result);
67
+ }
68
+ );
69
+ }
70
+
71
+ function next_page(current_page){
72
+ tag = $("#condition_tag").val();
73
+ start_date = $("#condition_start_date").val();
74
+ end_date = $("#condition_end_date").val();
75
+ target_page = current_page + 1;
76
+ if(target_page > <%= @total_page %>){
77
+ target_page = <%= @total_page %>;
78
+ }
79
+ $.ajax({
80
+ url: '/eric_weixin/cms/weixin/media_news/query_media_articles',
81
+ type: 'get',
82
+ data: {tag: tag, start_date: start_date, end_date: end_date, page: target_page},
83
+ async: false
84
+ }).done(
85
+ function(result){
86
+ $("#query_result").html(result);
87
+ }
88
+ );
89
+ }
90
+ </script>
@@ -0,0 +1,8 @@
1
+ <table>
2
+ <% @weixin_users.each do |user| %>
3
+ <tr>
4
+ <td><%= check_box_tag 'preview_openid', user.openid, false %>
5
+ <label class="inline"><%= user.nickname %></label></td>
6
+ </tr>
7
+ <% end %>
8
+ </table>
@@ -0,0 +1,53 @@
1
+ <h5>最终要发送的图文</h5>
2
+ <table>
3
+ <% @will_send_articles.each do |will_send_article| %>
4
+ <tr>
5
+ <td><%= will_send_article.title %></td>
6
+ <td><img src="<%= will_send_article.media_resource.local_link %>" width="50" height="50"></td>
7
+ <td><%= will_send_article.is_first_article ? '首图文' : '' %></td>
8
+ <td>
9
+ <%= link_to '↑↑', "javascript:up_article(#{will_send_article.id})" %>
10
+ &nbsp;&nbsp;
11
+ <%= link_to '↓↓', "javascript:down_article(#{will_send_article.id})" %>
12
+ </td>
13
+ </tr>
14
+ <% end %>
15
+ </table>
16
+
17
+ <%= hidden_field_tag :will_send_article_msg, @will_send_article_msg %>
18
+
19
+ <script language="javascript">
20
+ function up_article(article_id){
21
+ existed_article_ids = $("#will_send_article_msg").val();
22
+ $.ajax({
23
+ url: "/eric_weixin/cms/weixin/media_news/will_send_articles",
24
+ type: 'get',
25
+ data: {existed_article_ids: existed_article_ids, up_article_id: article_id}
26
+ }).done(
27
+ function(result){
28
+ if(result == "top"){
29
+ alert("已经在最顶部了");
30
+ } else {
31
+ $("#will_send_content").html(result);
32
+ }
33
+ }
34
+ );
35
+ }
36
+
37
+ function down_article(article_id){
38
+ existed_article_ids = $("#will_send_article_msg").val();
39
+ $.ajax({
40
+ url: "/eric_weixin/cms/weixin/media_news/will_send_articles",
41
+ type: 'get',
42
+ data: {existed_article_ids: existed_article_ids, down_article_id: article_id}
43
+ }).done(
44
+ function(result){
45
+ if(result == "bottom"){
46
+ alert("已经在最底部了");
47
+ } else {
48
+ $("#will_send_content").html(result);
49
+ }
50
+ }
51
+ );
52
+ }
53
+ </script>
@@ -0,0 +1,284 @@
1
+ <h3 class="text-center">图文发送</h3>
2
+ <br/>
3
+
4
+ <div class="row">
5
+ <div class="columns small-3 text-right">
6
+ <label class="inline">选择公众号</label>
7
+ </div>
8
+ <div class="columns small-5 end">
9
+ <%= select_tag "condition[public_account_id]", options_from_collection_for_select(::EricWeixin::PublicAccount.all, 'id', 'name', '') %>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="row">
14
+ <div class="columns small-3 text-right">
15
+ <label class="inline">图文标签</label>
16
+ </div>
17
+ <div class="columns small-5 end">
18
+ <%= text_field_tag 'condition[tag]' %>
19
+ </div>
20
+ </div>
21
+ <div class="row">
22
+ <div class="columns small-3 text-right">
23
+ <label class="inline">图文创建时间</label>
24
+ </div>
25
+ <div class="columns small-2">
26
+ <%= date_field_tag 'condition[start_date]' %>
27
+ </div>
28
+ <div class="columns small-1 text-center">
29
+ <label class="inline">至</label>
30
+ </div>
31
+ <div class="columns small-2">
32
+ <%= date_field_tag 'condition[end_date]' %>
33
+ </div>
34
+ <div class="columns small-offset-1 small-3 text-center">
35
+ <%= link_to '查询', "javascript:query_media_articles()", class: 'button tiny' %>
36
+ </div>
37
+ </div>
38
+ <script language="javascript">
39
+ function query_media_articles(){
40
+ tag = $("#condition_tag").val();
41
+ start_date = $("#condition_start_date").val();
42
+ end_date = $("#condition_end_date").val();
43
+ public_account_id = $("#condition_public_account_id").val();
44
+ $.ajax({
45
+ url: '/eric_weixin/cms/weixin/media_news/query_media_articles',
46
+ type: 'get',
47
+ data: {tag: tag, start_date: start_date, end_date: end_date, public_account_id: public_account_id}
48
+ }).done(
49
+ function(result){
50
+ $("#query_result").html(result);
51
+ }
52
+ )
53
+ }
54
+ </script>
55
+ <!--************************************** 查找到的内容 ************************************************-->
56
+ <div class="row">
57
+ <div id="query_result" class="columns small-12 panel callout radius">
58
+
59
+ </div>
60
+ </div>
61
+
62
+ <!--************************************** 将要被发送的内容 ************************************************-->
63
+ <div class="row">
64
+ <div id="will_send_content" class="columns small-12 panel callout radius">
65
+
66
+ </div>
67
+ </div>
68
+
69
+ <div class="row">
70
+ <div class="columns small-6 text-right">
71
+ <label class="inline">发送对象</label>
72
+ </div>
73
+ <div class="columns small-3 end">
74
+ <%= select_tag 'send[target]', options_from_collection_for_select(::Weixin::Process.get_user_groups, 'first', 'second', '') %>
75
+ </div>
76
+ </div>
77
+
78
+ <div class="row">
79
+ <div class="columns small-6 text-right end">
80
+ <label class="inline">其他</label>
81
+ </div>
82
+ <div class="columns small-6 text-left">
83
+ <%= check_box_tag 'do_send[fix_time]', true, false %><label class="inline">定时发送(分钟数请设置为5分钟的整数倍:如10点05分,10点10分)</label>
84
+ </div>
85
+ </div>
86
+ <div class="row">
87
+ <div class="columns small-offset-6 small-6">
88
+ <div class="row">
89
+ <div class="columns small-4">
90
+ <label class="inline">定时发送时间:()</label>
91
+ </div>
92
+ <div class="columns small-4">
93
+ <%= date_field_tag 'send[fix_date]' %>
94
+ </div>
95
+ <div class="columns small-4">
96
+ <%= time_field_tag 'send[fix_time]' %>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <div class="row">
102
+ <div class="columns small-offset-6 small-6 text-left">
103
+ <%= check_box_tag 'send[save_to_history]', true, false %><label class="inline">保留为历史消息(所有用户可见)</label>
104
+ </div>
105
+ </div>
106
+
107
+ <br/><br/>
108
+ <%= hidden_field_tag :media_news_id, @media_news_id %>
109
+ <div class="row">
110
+ <div class="columns small-6 small-offset-3 end">
111
+
112
+ <div class="row">
113
+ <div class="columns small-4 text-center">
114
+ <%= link_to '预览', "#", class: "button tiny", 'data-reveal-id' => 'SendPreview' %>
115
+ </div>
116
+ <div class="columns small-4 text-center">
117
+ <%= link_to '保存', "javascript:save_news()", class: "button tiny" %>
118
+ </div>
119
+ <div class="columns small-4 text-center">
120
+ <%= link_to '立即发送', "javascript:send_news_now()", class: "button tiny" %>
121
+ </div>
122
+ </div>
123
+
124
+ </div>
125
+ </div>
126
+
127
+ <div id="SendPreview" class="reveal-modal" data-reveal>
128
+ <h3>选择预览用户</h3>
129
+ <div class="panel callout radius" id="select_pic_div">
130
+
131
+ <div class="row">
132
+ <div class="columns small-4 text-right">
133
+ <label class="inline">请输入用户昵称</label>
134
+ </div>
135
+ <div class="columns small-4">
136
+ <%= text_field_tag 'preview[nick_name]' %>
137
+ </div>
138
+ <div class="columns small-4">
139
+ <%= link_to '查询', "javascript:select_weixin_user()", class: 'button tiny' %>
140
+ </div>
141
+ </div>
142
+
143
+ <!--************************************** 查找到的预览用户 ************************************************-->
144
+ <div class="row">
145
+ <div id="preview_select_user" class="columns small-12 panel">
146
+
147
+ </div>
148
+ </div>
149
+
150
+ <div class="row">
151
+ <div class="columns small-6 text-center">
152
+ <%= link_to '发送', 'javascript:preview()', class: 'text-center button tiny' %>
153
+ </div>
154
+ <div class="columns small-6 text-center">
155
+ <%= link_to '取消', 'javascript:close_modal()', class: 'text-center button tiny' %>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+
161
+ <script language="javascript">
162
+ function close_modal(){
163
+ $('#SendPreview').foundation('reveal', 'close');
164
+ }
165
+
166
+ function select_weixin_user(){
167
+ nickname = $("#preview_nick_name").val();
168
+ public_account_id = $("#condition_public_account_id").val();
169
+ $.ajax({
170
+ url: "/eric_weixin/cms/weixin/media_news/query_weixin_users",
171
+ type: 'get',
172
+ data: {nickname: nickname, public_account_id: public_account_id}
173
+ }).done(
174
+ function (result) {
175
+ $("#preview_select_user").html(result);
176
+ }
177
+ )
178
+ }
179
+
180
+ function preview(){
181
+ preview_openid = $("#preview_openid").val();
182
+ will_send_article_msg = $("#will_send_article_msg").val();
183
+ user_group_name = $("#send_target").val();
184
+ send_at_fixed_time = $("#do_send_fix_time").val();
185
+ send_fixed_date = $("#send_fix_date").val();
186
+ send_fixed_time = $("#send_fix_time").val();
187
+ send_save_to_history = $("#send_save_to_history").val();
188
+ public_account_id = $("#condition_public_account_id").val();
189
+ media_news_id = $("#media_news_id").val();
190
+ $.ajax({
191
+ url: "/eric_weixin/cms/weixin/media_news/preview",
192
+ type: 'post',
193
+ data: {
194
+ will_send_article_msg: will_send_article_msg,
195
+ user_group_name: user_group_name,
196
+ send_at_fixed_time: send_at_fixed_time,
197
+ send_fixed_date: send_fixed_date,
198
+ send_fixed_time: send_fixed_time,
199
+ send_save_to_history: send_save_to_history,
200
+ public_account_id: public_account_id,
201
+ preview_openid: preview_openid,
202
+ media_news_id: media_news_id
203
+ }
204
+ }).done(
205
+ function(result){
206
+ if(result.substr(0,4)=="保存失败") {
207
+ alert(result);
208
+ } else {
209
+ $("#media_news_id").val(result);
210
+ $('#SendPreview').foundation('reveal', 'close');
211
+ alert("预览成功")
212
+ }
213
+ }
214
+ )
215
+ }
216
+
217
+ function save_news(){
218
+ will_send_article_msg = $("#will_send_article_msg").val();
219
+ user_group_name = $("#send_target").val();
220
+ send_at_fixed_time = $("#do_send_fix_time").val();
221
+ send_fixed_date = $("#send_fix_date").val();
222
+ send_fixed_time = $("#send_fix_time").val();
223
+ send_save_to_history = $("#send_save_to_history").val();
224
+ public_account_id = $("#condition_public_account_id").val();
225
+ media_news_id = $("#media_news_id").val();
226
+ $.ajax({
227
+ url: "/eric_weixin/cms/weixin/media_news/save_news",
228
+ type: 'post',
229
+ data: {
230
+ will_send_article_msg: will_send_article_msg,
231
+ user_group_name: user_group_name,
232
+ send_at_fixed_time: send_at_fixed_time,
233
+ send_fixed_date: send_fixed_date,
234
+ send_fixed_time: send_fixed_time,
235
+ send_save_to_history: send_save_to_history,
236
+ public_account_id: public_account_id,
237
+ media_news_id: media_news_id
238
+ }
239
+ }).done(
240
+ function(result){
241
+ if(result.substr(0,4)=="保存失败") {
242
+ alert(result);
243
+ } else {
244
+ $("#media_news_id").val(result);
245
+ alert("保存成功")
246
+ }
247
+ }
248
+ )
249
+ }
250
+
251
+ function send_news_now() {
252
+ will_send_article_msg = $("#will_send_article_msg").val();
253
+ user_group_name = $("#send_target").val();
254
+ send_at_fixed_time = $("#do_send_fix_time").val();
255
+ send_fixed_date = $("#send_fix_date").val();
256
+ send_fixed_time = $("#send_fix_time").val();
257
+ send_save_to_history = $("#send_save_to_history").val();
258
+ public_account_id = $("#condition_public_account_id").val();
259
+ media_news_id = $("#media_news_id").val();
260
+ $.ajax({
261
+ url: "/eric_weixin/cms/weixin/media_news/send_news_now",
262
+ type: 'post',
263
+ data: {
264
+ will_send_article_msg: will_send_article_msg,
265
+ user_group_name: user_group_name,
266
+ send_at_fixed_time: send_at_fixed_time,
267
+ send_fixed_date: send_fixed_date,
268
+ send_fixed_time: send_fixed_time,
269
+ send_save_to_history: send_save_to_history,
270
+ public_account_id: public_account_id,
271
+ media_news_id: media_news_id
272
+ }
273
+ }).done(
274
+ function(result){
275
+ if(result.substr(0,4)=="保存失败") {
276
+ alert(result);
277
+ } else {
278
+ $("#media_news_id").val(result);
279
+ alert("发送成功")
280
+ }
281
+ }
282
+ )
283
+ }
284
+ </script>