forked from NetCommons3/NetCommons
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSnsButtonHelper.php
More file actions
120 lines (113 loc) · 2.62 KB
/
SnsButtonHelper.php
File metadata and controls
120 lines (113 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
/**
* Created by PhpStorm.
* User: ryuji
* Date: 15/03/06
* Time: 14:57
*/
App::uses('AppHelper', 'View/Helper');
/**
* Class BlogsFormatHelper
* ex)
*
* Controller
*
* ```php
* $helpers = [
* 'NetCommons.SnsButton',
* ];
* ```
*
* View
*
* ```view.ctp
* echo $this->SnsButton->twitter($contentPermLink);
* echo $this->SnsButton->facebook($contentPermLink);
* ```
*/
class SnsButtonHelper extends AppHelper {
/**
* @var array helpers
*/
public $helpers = array(
'Html',
);
/**
* @var bool scriptロード済みならtrue
*/
protected static $_loaded = [
'facebook' => false,
'twitter' => false,
];
/**
* facebookボタン用script
*
* @return string
*/
protected function _facebookScript() {
$out = '';
if (self::$_loaded['facebook'] === false) {
$this->Html->scriptBlock(
"(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = \"//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.3\";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));",
['inline' => false]
);
self::$_loaded['facebook'] = true;
$out .= '<div id="fb-root"></div>';
}
return $out;
}
/**
* twitterボタン用script
*
* @return string
*/
protected function _twitterScript() {
$out = '';
if (self::$_loaded['twitter'] === false) {
$this->Html->scriptBlock(
"!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + '://platform.twitter.com/widgets.js';
fjs.parentNode.insertBefore(js, fjs);
}
}(document, 'script', 'twitter-wjs');",
['inline' => false]
);
self::$_loaded['twitter'] = true;
}
return $out;
}
/**
* facebook ボタン
*
* @param string $permLink コンテンツのパーマリンク
* @return string ボタンタグ
*/
public function facebook($permLink) {
$out = $this->_facebookScript();
$out .= '<div class="fb-like pull-left" data-href="' . $permLink . '" data-layout="button_count" data-action="like"
data-show-faces="false" data-share="false"></div>';
return $out;
}
/**
* twitter ボタン
*
* @param string $permLink コンテンツのパーマリンク
* @return string ボタンタグ
*/
public function twitter($permLink) {
$out = $this->_twitterScript();
$out .= '<a href="https://twitter.com/share" class="twitter-share-button" data-url="' . $permLink . '">Tweet</a>';
return $out;
}
}