ijackua / yii2-kudos-widget
Yii2 widget for Svbtle style Kudos. Based on JS from https://github.com/masukomi/kudos
Installs: 35
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 0
Open Issues: 1
Language:CSS
Type:yii2-extension
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2022-02-01 12:32:23 UTC
README
Yii2 widget for Svbtle style Kudos. Based on JS from https://github.com/masukomi/kudos
Demo
On posts details page of my blog or original JS widget demo
Usage example
Kudos::widget( [ 'widgetId' => 'post', // unique id of widget on page, to allow more than one widget on the page 'uid' => $post->id, // uid of Kudoable element, for stat count 'count' => $post->kudos, // initial Kudos value, to display 'onAdded' => 'function (event) { // JS callback on Kudo +1 , you can do what ever you want here // for example send AJAX request to track stats var uid = $(this).data("uid"); $.post("/kudo/plus/post/" + uid);}', 'onRemoved' => 'function (event) { // JS callback on Kudo -1, send another AJAX request to track stats var uid = $(this).data("uid"); $.post("/kudo/minus/post/" + uid);}', ]);
Tracking and stat storage server side you should implement yourself what ever you want.
localStorage
is used to keep widget state for each user personally. It uses widgetId|uid
key to be unique for multiple widgets on the site.
And does not pollute request Headers with extra Cookies (if someone Kuoded a lot of your pages).
Events
onActive
is sent when you hover over the object (the circle is growing)onInactive
is sent when you mouse-off the objectonAdded
is sent when you successfully kudo somethingonRemoved
is sent when you un-kudo something
Advanced usage with custom icons inside widget
I am using font-smiley from http://fontello.com/ Custom icon-font should be prepared and connected to the page, then you can adjust smiley look and feel via CSS and add them inside Kudos widget like this
Kudos::widget( [ 'widgetId' => 'post', 'uid' => $post->id, 'count' => $post->kudos, 'defaultClass' => 'icon icon-emo-thumbsup', 'onAdded' => 'function (event) { var uid = $(this).data("uid"); $(this).find(".icon").removeClass("icon-emo-thumbsup").addClass("icon-emo-beer"); $.post("/kudo/plus/post/" + uid);}', 'onRemoved' => 'function (event) { var uid = $(this).data("uid"); $(this).find(".icon").removeClass("icon-emo-beer").addClass("icon-emo-thumbsup"); $.post("/kudo/minus/post/" + uid);}', ]);