Comments (11)
If it's marked as spam, we'd delete their account entirely.
from council.
This one will be interesting:
5. Thread appeared in search (e.g. 1 point)
Gathering which results (in this case - threads) are showed from Algolia is tricky and it'll be great to see how you handle this.
from council.
@JeffreyWay I've been experimenting with the reputation system in the last couple of hours, before going to work. I won't submit a PR for this since I guess you want to finish the work yourself, but I can't wait to see how you will deal (if you're going to) with points subtraction on best answer change, deletion and so on :)
Just for reference, here's the branch I was working on:
https://github.com/MattMangoni/council/tree/advanced_reputation
from council.
I currently develop a project I working on, and I feel more comfortable with the following api
$user->award($points)
To prevent growing the User
class, and to add the ability to award multiple entities like User
or Group
in a game, I added an award
method using Awardable
trait rather that Reputation
class.
trait Awardable
{
const THREAD_WAS_PUBLISHED = 10;
const REPLY_POSTED = 2;
const BEST_REPLY_AWARDED = 50;
/**
* Award reputation points.
*
* $param integer $points
*/
public function award($points)
{
$this->increment('reputation', $points);
}
}
I also feel that points history with clear message is a MUST so we can recalc the user points any time.
I know that it's not a reputation system series, but I'm really interested to hear from you :)
from council.
@devmsh Well, you have to consider that if you have a dedicated table for points, App\Reputation can easily be transformed into a model.
That's exactly what I did in my fork, pointing it to a "reputation_points" table.
But tbh, I like the idea of awarding the user directly better.
Another thing I did was adding a new row to the table for each interaction.
Instead of deleting points, I basically "give" -X points on reply thread/deletion and best reply change (ONLY if the new best reply belongs to a different user then the previous one). Not sure how much that will impact on performance in large scale applications.
Then, I set a custom attribute called "reputation" to the User model in order for it to be accessible the same way as before.
from council.
Nice feature!
from council.
- Thread marked as spam: -15 points (original points + penalty)
- Reply maked as spam: -3 points
I mean yes it seems like reputation would be as valuable as reddit karma or points from Who's Line but if there's gamification sadly people will attempt to game it.
from council.
Is this already fully implemented?
from council.
Only about half has. I’ll finish it up soon.
from council.
I think a level should be displayed instead of the number of experience.
Let's say a user like @JeffreyWay has been replying to all the threads he would soon get like 999999999XP and it would keep on incrementing until it won't fit in an integer anymore.
So something like:
- Tiny Grasshopper
- Grasshopper
- Budgie
- Eagle
- Emu
- Gnu
Then on the profile page you'll see how many xp you got and how far it is to the next level.
from council.
Yeah I do like $user->award()
too. I specifically chose a dedicated Reputation
class for the reason that @MattMangoni mentioned. We'll at some point switch to a dedicated table for storing reputation.
from council.
Related Issues (20)
- No consistency in routes/web.php HOT 3
- Every Laravel project redirects to /threads after installing council HOT 1
- Modify Reply path() method to generate the correct URL for paginated replies.
- Truncate thread body in thread.index HOT 3
- User notifications throw 'undefined' error HOT 2
- Will this forum system be able to work without redis? HOT 5
- Vuejs Error 422 (Unprocessable Entity) on POST HOT 1
- @mention VueJs post error HOT 2
- Demo HOT 1
- Deleting trending thread HOT 2
- Shared hosting issue. HOT 1
- Responsive UI HOT 2
- Cancelling an edit on an already edited reply re-places old body.
- Reputation is not being reduced for user when a reply with a favorite is being deleted. HOT 1
- Admins cannot edit threads
- Is it possible to eager load isFavorited() HOT 1
- How to upgrade to latest laravel version? HOT 1
- translation for persian farsi language
- Are the replies not indexed in Google?
- Cloning into 'council'... error
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from council.