@@ -119,17 +119,21 @@ public function execute( $subPage ) {
119
119
$ out ->addWikiTextAsInterface ( $ this ->msg ( 'special-shareachievement-invalid ' )->parse () );
120
120
return ;
121
121
}
122
- $ data = array_merge ( $ data , $ this ->getSnsShareData () );
122
+
123
+ $ data ['text-share-header ' ] = $ this ->msg ( 'special-shareachievement-header-share ' ,
124
+ $ this ->obtainer ->getName () );
125
+ $ data ['data-add-this ' ] = $ this ->getAddThisData ();
126
+ if ( !$ data ['data-add-this ' ] ) {
127
+ $ data ['data-share ' ] = $ this ->getSnsShareData ();
128
+ }
123
129
124
130
$ betaConfigEnabled = $ config ->get ( Constants::CONFIG_KEY_ENABLE_BETA_FEATURE );
125
131
$ userBetaEnabled = $ betaConfigEnabled && BetaFeatures::isFeatureEnabled ( $ viewer ,
126
132
Constants::PREF_KEY_ACHIEVEMENT_ENABLE );
127
133
if ( $ viewer ->isAnon () ) {
128
- $ data ['has-suggestion ' ] = true ;
129
134
$ data ['text-suggestion ' ] = $ this ->msg ( 'special-shareachievement-suggestion-sign-up ' ,
130
135
$ viewer ->getName () )->parse ();
131
136
} elseif ( $ betaConfigEnabled && !$ userBetaEnabled ) {
132
- $ data ['has-suggestion ' ] = true ;
133
137
$ data ['text-suggestion ' ] = $ this ->msg ( 'special-shareachievement-suggestion-beta ' ,
134
138
$ viewer ->getName () )->parse ();
135
139
}
@@ -186,16 +190,46 @@ private function getBadgeData() {
186
190
];
187
191
}
188
192
193
+ /** @return array|null */
194
+ private function getAddThisData () {
195
+ $ config = $ this ->getConfig ()->get ( Constants::CONFIG_KEY_ADD_THIS_ID );
196
+ if ( !$ config ) {
197
+ return null ;
198
+ }
199
+
200
+ $ data = [];
201
+ $ classes = [ 'addthis_inline_share_toolbox ' ];
202
+ if ( is_array ( $ config ) ) {
203
+ if ( isset ( $ config ['tool ' ] ) ) {
204
+ $ classes [] = 'addthis_inline_share_toolbox_ ' . $ config ['tool ' ];
205
+ }
206
+ $ data ['text-pub-id ' ] = $ config ['pub ' ];
207
+ } else {
208
+ $ data ['text-pub-id ' ] = $ config ;
209
+ }
210
+
211
+ $ data ['text-class ' ] = implode ( ' ' , $ classes );
212
+ $ data ['text-url-for-share ' ] = $ this ->getUrlForShare ();
213
+
214
+ $ obtainer = $ this ->obtainer ;
215
+ $ viewer = $ this ->viewer ;
216
+ $ tweet = ( $ obtainer == $ viewer ) ? 'special-shareachievement-tweet '
217
+ : 'special-shareachievement-tweet-viewer ' ;
218
+ $ tweet = $ this ->msg ( $ tweet )
219
+ ->plaintextParams ( $ obtainer ->getName () )
220
+ ->plaintextParams ( $ this ->achvNameMsg ->text () )
221
+ ->plaintextParams ( '' )
222
+ ->parse ();
223
+ $ data ['text-tweet ' ] = trim ( $ tweet );
224
+ return $ data ;
225
+ }
226
+
189
227
/** @return array */
190
228
private function getSnsShareData () {
191
229
$ config = $ this ->getConfig ();
192
230
$ obtainer = $ this ->obtainer ;
193
231
194
- // Use English title to avoid very long url which is build by urlencode()
195
- $ titleText = NamespaceInfo::CANONICAL_NAMES [NS_SPECIAL ] . ': ' . self ::PAGE_NAME . '/ ' . $ this ->base64subPage ;
196
- $ articlePath = $ config ->get ( 'ArticlePath ' );
197
- $ localUrl = str_replace ( '$1 ' , $ titleText , $ articlePath );
198
- $ titleUrl = wfExpandUrl ( $ localUrl );
232
+ $ titleUrl = $ this ->getUrlForShare ();
199
233
200
234
$ share = [];
201
235
$ facebookAppId = $ config ->get ( Constants::CONFIG_KEY_FACEBOOK_APP_ID );
@@ -215,21 +249,29 @@ private function getSnsShareData() {
215
249
: 'special-shareachievement-tweet-viewer ' ;
216
250
217
251
$ tweet = $ this ->msg ( $ tweet );
218
- $ tweet = $ tweet ->plaintextParams ( $ this -> obtainer ->getName () )
252
+ $ tweet = $ tweet ->plaintextParams ( $ obtainer ->getName () )
219
253
->plaintextParams ( $ this ->achvNameMsg ->text () )
220
- ->plaintextParams ( $ titleUrl );
254
+ ->plaintextParams ( $ titleUrl )
255
+ ->parse ();
221
256
$ tweetUrl = 'https://twitter.com/intent/tweet?text= ' . urlencode ( $ tweet );
222
257
$ share [] = [
223
258
'text-id ' => 'share-achievement-twitter ' ,
224
259
'text-text ' => $ this ->msg ( 'special-shareachievement-item-twitter ' ),
225
260
'text-url ' => $ tweetUrl ,
226
261
];
227
262
228
- return [
229
- 'text-share-header ' => $ this ->msg ( 'special-shareachievement-header-share ' ,
230
- $ this ->obtainer ->getName () ),
231
- 'data-share ' => $ share
232
- ];
263
+ return $ share ;
264
+ }
265
+
266
+ /**
267
+ * Returns english url to avoid very long url which is built by urlencode() with other languages than english.
268
+ * @return string
269
+ */
270
+ private function getUrlForShare () {
271
+ $ titleText = NamespaceInfo::CANONICAL_NAMES [NS_SPECIAL ] . ': ' . self ::PAGE_NAME . '/ ' . $ this ->base64subPage ;
272
+ $ articlePath = $ this ->getConfig ()->get ( 'ArticlePath ' );
273
+ $ localUrl = str_replace ( '$1 ' , $ titleText , $ articlePath );
274
+ return wfExpandUrl ( $ localUrl );
233
275
}
234
276
235
277
private function addMeta () {
0 commit comments