Hi all.
I've modified "addthis_share" plugin for my purpose.
mod/addthis_share/start.php:
<?php
elgg_register_event_handler('init', 'system', 'addthis_share_init');
function addthis_share_init()
{
elgg_extend_view('object/elements/summary', 'addthis_share/addthis');
}
?>
And mod/addthis_share/views/default/addthis_share/addthis.php:
<?php
$full = elgg_extract('full_view', $vars, FALSE);
$context = elgg_get_context();
if ($context != 'thewire' && $context != 'widgets' && $context != 'blog' && $context != 'groups' && $context != 'friends' && $context != 'videos' && $context != 'bookmarks') {
echo '<br><div align="center"><table><tr><td class="ya_share"><div align="center" class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir,twitter,lj,viber,whatsapp,skype,telegram" data-title="Relax Time!" data-description="Relax time!" ></div></td></tr></table></div>';
echo '<script src="//yastatic.net/share2/share.js" charset="utf-8" async="async"></script><br>';
} ?>
I want an userpoints (other plugin) will be adding to users for share content of my site.
Author of userpoints plugin are busy irl atm and can't help with that in the nearest days. But he gave me an explanation how to do it:
The main thing to get working is not the handling of userpoints as such. This could be implemented easily if there would be any kind of feedback available (as in terms of an Elgg plugin hook getting triggered) when something gets shared. The implementation of the triggering of the plugin hook is the tricky part. For this to work, the Javascript code of Addthis would have to be loaded in a different way, i.e. not just with a <script> tag but using elgg_define_js to allow for loading it in the right order together with Elgg's elgg.js library to have the Elgg JS API functions available. The Addthis code has event listeners. These can be used to trigger an Elgg plugin hook which in turn can be used to trigger the awarding of userpoints.
I'm not using exactly "AddThis service" for sharing content, it can be seen above from code.
In documentation of that service:
1. Add script block:
<script src="https://yastatic.net/share2/share.js"></script>
2. Call method "Ya_share2":
var share = Ya.share2('my-share', { hooks: { onshare: function () { alert('Button pressed'); } } });
Or
var myShare = document.getElementById('my-share');
var share = Ya.share2(my-share, {
hooks: {
onshare: function () {
alert('Button pressed');
}
}
});
What and where I need to write for making it work? If I understand correctly- need to write elgg_register_plugin_hook_handler in the init function, but I don't understand how, especially with JS.
Thanks in advance.
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by RaĆ¼l Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.
What to do there?
"share.js" from yastatic.net is loaded. No errors in console.
"ya-share.js" is not loaded.
It seems some typo somewhere... Especially in JS.
In
Add
Again, read the docs.
It said- wrong syntax.
cat ya-share.js
I wrote "onready" hook for while, it's possible. It will call function when plugin is loaded.
Yes, docs, I know :). Now asking for help if possible.
http://elgghacks.com/questions/view/3947/require-js
http://elgghacks.com/questions/view/4088/amd-loading-js-issue
Thanks, RvR. Seems it will solve the problem. Will test tomorrow and will write here.
cat YanShare.js:
cat start.php:
cat addthis.php:
No errors in browser and i can see that YanShare.js is loaded. But nothing happened after loading page, even JS alert. Of course i gave permit to browser to not block popups.
I made another JS-file "sharescript.js" and put there define with "var YanShare = require('YanShare');" from manual that RvR gave. Also, i wrote in sharescript.js simple JS alert function.
In "addthis.php" (in the view) I wrote "elgg_require_js(sharescript);" (from manual). And wrote in the view simple code <button onclick=name_of_function_wth_alert();>Click</button>. That's loaded without errors (in browsers console) but no alert window was openned after clicking on button. "Sharescript" was loaded (seen in console).
I did "chown apache. *" and "chmod +x *" inside JS directory.
Can anyone help with that functionality please?
Add in start.php directly:
Without any
elgg_define_js()
ReferenceError: require is not defined
Ok, once more.
YanShare.js:
sharescript.js:
addthis.php:
start.php:
Tried with and without defining "sharescript" in start.php.
- Previous
- 1
- 2
- 3
- Next
You must log in to post replies.