add wexin diy share

Brightcells 9 jaren geleden
bovenliggende
commit
f3edf9f11f
2 gewijzigde bestanden met toevoegingen van 215 en 0 verwijderingen
  1. 201 0
      pai2/static/pai2/js/jswe.js
  2. 14 0
      photo/templates/photo/photo_detail.html

+ 201 - 0
pai2/static/pai2/js/jswe.js

@@ -0,0 +1,201 @@
1
+!(function(e, t) {
2
+    var config = {
3
+        wxconfig: 'http://api.pai.ai/wx/jsapi_signature',
4
+    }, wxData = {
5
+        debug: false,
6
+        imgUrl: '',
7
+        link: '',
8
+        desc: '',
9
+        title: '',
10
+        timeLine: ''
11
+    }, wxConfig = {
12
+        hide: false,
13
+        close: false
14
+    }, jsApiList = [
15
+        'checkJsApi',
16
+        'onMenuShareTimeline',
17
+        'onMenuShareAppMessage',
18
+        'onMenuShareQQ',
19
+        'onMenuShareWeibo',
20
+        'hideMenuItems',
21
+        'showMenuItems',
22
+        'hideAllNonBaseMenuItem',
23
+        'showAllNonBaseMenuItem',
24
+        'translateVoice',
25
+        'startRecord',
26
+        'stopRecord',
27
+        'onRecordEnd',
28
+        'playVoice',
29
+        'pauseVoice',
30
+        'stopVoice',
31
+        'uploadVoice',
32
+        'downloadVoice',
33
+        'chooseImage',
34
+        'previewImage',
35
+        'uploadImage',
36
+        'downloadImage',
37
+        'getNetworkType',
38
+        'openLocation',
39
+        'getLocation',
40
+        'hideOptionMenu',
41
+        'showOptionMenu',
42
+        'closeWindow',
43
+        'scanQRCode',
44
+        'chooseWXPay',
45
+        'openProductSpecificView',
46
+        'addCard',
47
+        'chooseCard',
48
+        'openCard'
49
+    ], wxApiFun
50
+
51
+    function isOpenOnPC() {  // 判断当前网页是否在 PC 浏览器中打开
52
+        ua = navigator.userAgent
53
+        return /windows nt/i.test(ua) || /macintosh/i.test(ua) || /linux x86_64/i.test(ua)
54
+    }
55
+
56
+    function isOpenInWeixin() {  // 判断当前网页是否在微信内置浏览器中打开
57
+        return /micromessenger/i.test(navigator.userAgent)
58
+    }
59
+
60
+    function getWeixinVersion() {
61
+        var ua = navigator.userAgent,
62
+            mt = ua.match(/micromessenger\/([\d.]+)/i)
63
+        return (mt ? mt[1] : '')
64
+    }
65
+
66
+    // This function checks whether Wechat is the appointed version or not
67
+    // Cmp: http://jsperf.com/regexp-test-vs-indexof-ignore-upper-and-lower
68
+    function isWeixinVersion(version) {
69
+        // return new RegExp('micromessenger/' + version , 'i').test(navigator.userAgent)
70
+        return navigator.userAgent.toLowerCase().indexOf('micromessenger/' + version) != -1
71
+    }
72
+
73
+    function hideOptionMenu() {
74
+        wxConfig.hide = true
75
+        update()
76
+    }
77
+
78
+    function showOptionMenu() {
79
+        wxConfig.hide = false
80
+        update()
81
+    }
82
+
83
+    function closeWindow() {
84
+        wxConfig.close = true
85
+        update()
86
+    }
87
+
88
+    function wxReady(data) {
89
+        wx.config({
90
+            debug: wxData.debug,
91
+            appId: data.appId,
92
+            timestamp: data.timestamp,
93
+            nonceStr: data.nonceStr,
94
+            signature: data.signature,
95
+            jsApiList: jsApiList
96
+        })
97
+
98
+        var callbacks = {
99
+            trigger: function (res) {
100
+                // alert('用户点击发送给朋友')
101
+                if (JSWE.wxTrigger) {JSWE.wxTrigger()}
102
+            },
103
+            success: function (res) {
104
+                // alert('已分享')
105
+                if (JSWE.wxSuccess) {JSWE.wxSuccess()}
106
+            },
107
+            cancel: function (res) {
108
+                // alert('已取消')
109
+                if (JSWE.wxCancel) {JSWE.wxCancel()}
110
+            },
111
+            fail: function (res) {
112
+                // alert(JSON.stringify(res))
113
+                if (JSWE.wxFail) {JSWE.wxFail()}
114
+            }
115
+        }, shareInfo = function(flag) {
116
+            _share = {
117
+                title: flag ? wxData.title : (wxData.timeLine || wxData.desc),
118
+                link: wxData.link,
119
+                imgUrl: wxData.imgUrl,
120
+                trigger: callbacks.trigger,
121
+                success: callbacks.success,
122
+                cancel: callbacks.cancel,
123
+                fail: callbacks.fail
124
+            }
125
+            if (flag) _share.desc = wxData.desc
126
+            return _share
127
+        }, wxApi = function() {
128
+            // 2. 分享接口
129
+            // 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
130
+            wx.onMenuShareAppMessage(shareInfo(1))
131
+            // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
132
+            wx.onMenuShareTimeline(shareInfo(0))
133
+            // 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
134
+            wx.onMenuShareQQ(shareInfo(1))
135
+            // 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口
136
+            wx.onMenuShareWeibo(shareInfo(1))
137
+            // 8 界面操作接口
138
+            // 8.1 隐藏右上角菜单
139
+            // 8.2 显示右上角菜单
140
+            if (wxConfig.hide) {wx.hideOptionMenu()} else {wx.showOptionMenu()}
141
+            // 8.7 关闭当前窗口
142
+            if (wxConfig.close) {wx.closeWindow()}
143
+        }
144
+
145
+        wx.ready(wxApi)
146
+
147
+        return wxApiFun = wxApi
148
+    }
149
+
150
+    if (isOpenInWeixin() || isOpenOnPC()) {
151
+        $.ajax({
152
+            url: config.wxconfig,
153
+            type: 'get',
154
+            dataType: 'jsonp',
155
+            jsonpCallback: 'callback',
156
+            data: {
157
+                url: window.location.href.split('#')[0]
158
+            },
159
+            success: wxReady
160
+        })
161
+    }
162
+
163
+    function initWxData(data, flag) {
164
+        for(d in data) {if (d in wxData) wxData[d] = data[d]}
165
+        if (flag) fixedWxData()
166
+    }
167
+
168
+    function changeWxData(key, value, flag) {
169
+        if (key in falDwxDataata) wxData[key] = value
170
+        if (flag) fixedWxData()
171
+    }
172
+
173
+    function fixedWxData() {
174
+        if ('undefined' !== typeof wxApiFun) wxApiFun()
175
+    }
176
+
177
+    v = {
178
+        version: '1.0.0',
179
+
180
+        // Basic Vars
181
+        config: config,
182
+        wxData: wxData,
183
+        jsApiList: jsApiList,
184
+
185
+        // Weixin Function
186
+        isOpenInWeixin: isOpenInWeixin,
187
+        getWeixinVersion: getWeixinVersion,
188
+        isWeixinVersion: isWeixinVersion,
189
+
190
+        // Menu Function
191
+        hideOptionMenu: hideOptionMenu,
192
+        showOptionMenu: showOptionMenu,
193
+        closeWindow: closeWindow,
194
+
195
+        // Share Function
196
+        initWxData: initWxData,
197
+        changeWxData: changeWxData,
198
+        fixedWxData: fixedWxData
199
+    }
200
+    e.JSWE = e.V = v
201
+})(window)

+ 14 - 0
photo/templates/photo/photo_detail.html

@@ -44,5 +44,19 @@
44 44
             </div>
45 45
             <div id="pai2_download" class="pai2_download">立即下载</div>
46 46
         </div>
47
+
48
+        <script type="text/javascript" src="http://cdn.bootcss.com/zepto/1.1.6/zepto.min.js"></script>
49
+        <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
50
+        <script type="text/javascript" src="{% static 'pai2/js/jswe.js' %}?v=1"></script>
51
+        <script>
52
+            V.wxData.debug = true;
53
+            V.initWxData({
54
+                imgUrl: "http://pai.ai/static/pai2/img/paiai_96_96.png",
55
+                link: window.location.href,
56
+                desc: "我使用拍爱分享了一张美图,你也快来试试吧",
57
+                title: "拍爱",
58
+                timeLine: ""
59
+            }, true);
60
+        </script>
47 61
     </body>
48 62
 </html>