Code Monkey home page Code Monkey logo

silverstripe-comments's Introduction

Comments

CI

Introduction

This module provides commenting functionality for Pages and other DataObjects on your Silverstripe site.

For more documentation about the module see the provided documentation located inside the docs folder.

Installation

composer require silverstripe/comments

Related

Contributing

Translations

Translations of the natural language strings are managed through a third party translation interface, transifex.com. Newly added strings will be periodically uploaded there for translation, and any new translations will be merged back to the project source code.

Please use https://www.transifex.com/projects/p/silverstripe-comments/ to contribute translations, rather than sending pull requests with YAML files.

See the "i18n" topic on docs.silverstripe.org for more details.

silverstripe-comments's People

Contributors

andrewandante avatar arambalakjian avatar assertchris avatar bergice avatar catcherdev avatar cheesesucker avatar chillu avatar dependabot[bot] avatar dhensby avatar dunatron avatar emteknetnz avatar github-actions[bot] avatar gordonbanderson avatar guysartorelli avatar intwebg avatar jaredkipe avatar jsirish avatar maxime-rainville avatar nightjar avatar phalkunz avatar raissanorth avatar robbieaverill avatar sabina-talipova avatar scopeynz avatar scott1702 avatar sheadawson avatar simonwelsh avatar vikas-srivastava avatar wilr avatar zauberfisch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

silverstripe-comments's Issues

Unable to edit a comment whose HTML has been generated by AJAX due to incorrect use of on() method

When a comment is marked as spam, it is not then possible to unmark it as an AJAX link. Currently any rendered HTML via AJAX does not have the necessary event attached to make the newly rendered links also work via AJAX.
The reason is that the on() method is associated like this:

$(".action-links a", commentsList).on('click', function(e) {

Now from http://api.jquery.com/on/, the crucial phrase is this, "Event handlers are bound only to the currently selected elements; they must exist on the page at the time your code makes the call to .on()". This is not the case when a comment's status is changed and newly rendered, the event will not be added to the action-link href elements.
The solution is to apply the event higher up to an element that always exists, using 'delegated events'. Changing the above line to this resolved the issue for me:

commentsList.on('click', '.action-links a', function(e) {

Minor untranslated choice in CMS CommentAdmin

From http://open.silverstripe.org/ticket/6741

Line 100 of cms/code/CommentAdmin.php lacks some translatable functions:

$table->addSelectOptions(array('all'=>'All', 'none'=>'None'));
[Useless rant: Some other elements of the French and Spanish versions of the latest CMS and Sapphire are lacking translations or have errors, but I never had any reply from the official group of translators. Oh well… I’ll try again]

Improve comment moderation UI in CMS

Copied from http://open.silverstripe.org/ticket/5523

  • Display only the first 150 for a comment on the summary table instead of everything.
  • Make the table align to top vertically.
  • Add a "select all" option.
  • Increase the number of comments displayed on the summary table page to 25.

Rationale:

Currently we display the entire content of a comment on the summary screen. When you get a lot of (long) spam, it takes forever to scroll through and select them all one by one so you can hit the "Mark as spam" button.

Option to remove moderated spam from the front end

If the admin is logged in and reviewing the comments for a page they will see all comments including moderated spam. This can result in many pages of spam when the bulk of it has already been dealt with. I think administrators might prefer to only see valid comments and unmoderated comments and hide those comments already marked as spam. This does remove the ability to unmark them as spam, but that ability would still exist in the CommentAdmin in the CMS.

More configurable page comments

Moved from http://open.silverstripe.org/ticket/4374

It would be good to have something like:

class PageCommentInterface? extends RequestHandler? { ... static $show_commenter_url = true; ...

}

and then add detection for it in PageCommentInterface::PageCommentForm?().

Not critical, will make life easier when removing that field in blogs etc.

File: /cms/code/sitefeatures/PageCommentInterface.php

Allow post-processing of comments (e.g. custom moderation)

Attached is a patch to be applied against current [2.4.4 & below] implementations of PageComment? and PageCommentInterface?.

It allows for post processing of comments (e.g. for custom moderation) and gives access to the PageCommentInterface_Form and client-facing Moderation Message.

These can perhaps squeeze into 2.4.5? I haven't yet thoroughly examined the new PageComments? module -- but will be happy to include similar functionality in a patch against the git repository if the rewrite does not support custom moderation / post-processing.

Both PageComment?.patch-2 and PageCommentInterface?.patch-2 must be applied to work. Example Usage is found in a PageCommentDecorator?.php (attached) which decorates PageComment? and provides IP and keyword filters.

It may be a little too much to merge into 2.4.5 as we're trying to tighten down that branch for long term stability. It is likely that we will have a 2.5 release based off 2.4 before trunk is fully ready for release but will have to confirm with the others.

FYI as you have probably seen comments is a separate module for 3.0 / trunk (which this component is for) and your patch is off 2.4 (which is still the CMS module).

Also please do not set milestones. The module maintainers are in charge of assigning features or patches to milestones.

Patches:

http://open.silverstripe.org/attachment/ticket/6310/PageComment.patch-2
http://open.silverstripe.org/attachment/ticket/6310/PageCommentInterface.patch-2
http://open.silverstripe.org/attachment/ticket/6310/PageCommentDecorator.php

No Comments Showing In Admin?

I have the comments module up and running on my SS 3 blog. Articles show comments and the proper number of comments is returned by the $comments.count variable. The blog management widget shows unmoderated comments waiting.

But there are no unmoderated comments shown in the Admin area. They are all moderated.

What do I have misconfigured? Or where can I start looking?

Bob

Comments textarea doesn't clear on successful submit

From http://open.silverstripe.org/ticket/6050

Once someone has submitted a comment (via ajax) the comment box should clear, as if it's gone and been submitted.

Currently it stays which makes it easy for someone to submit the same comment twice.

I know a javascript re-write is scheduled but don't know if the current method will be ported or re-thought.

To clear the comments box

form.elements.Comment.value = '';

at line 79 of cms/javascript/PageCommentInterface.js


Did you cross browser test this? Can you please ensure that it still works if the spam protection triggers? I can't reproduce this in Firefox in the first place (the "comment" field is blank already after submission), I assume you're referring to IE?

Calls to rss feed are case sensitive

Have had some spiders crawl our silverstripe sites and throw errors:

[Warning] No current controller available
/var/www/www/silverstripe/framework/control/Controller.php:388
No current controller available
Controller.php:388
Controller::curr()
Debug.php:337
Debug::friendlyError(404,Not Found)
HTTPResponse.php:243
SS_HTTPResponse->output()
Director.php:151
Director::direct(/commentingcontroller/rss/blogentry/743,DataModel)
main.php:126

When CommentingController or the classname are lower case, e.g. /commentingcontroller/rss/blogentry/743

I don't know enough about silverstripe yet to fix it so I'm intercepting it on the 'outside' and rewriting the url, but it'd be nice if the lowercase url also worked. On our servers it doesn't even display an error page- just a white screen. Happening on 3.0.5 and 3.1.2

silverstripe-recaptcha and silverstripe-comments

The module silverstripe-recaptcha automatically work with comments in SS 2.4, now with SS 3.1 comments not work with recaptcha.
Is there any way to connect the recaptcha module in the module comments?

Regards,
Jose A.

Unit tests break when suggested module "ezyang/htmlpurifier" is included

The tests testSanitizesWithAllowHtml and testDefaultTemplateRendersHtmlWithAllowHtml fail when the suggested module is included via composer update.

Steps to reproduce

  1. Install cms and framework via composer.
  2. Include "silverstripe/comments": "1.2.2" and "ezyang/htmlpurifier": "4.6.0" in composer.json
  3. Run sake dev/build
  4. Run sake dev/tests/CommentsTest flush=1.
  5. Observe two failed unit tests

Overriding Templates?

I've installed the comments module for my SS 3.0 blog and it's working.

But I want to override the CommentsInterface.ss template and I can't figure out where to put the overriding file. I've tried in themes/mytheme/template and themes/mytheme/templates/Includes and neither seem to work. Even after running my site.com/?flush=all.

This should not be hard, so I must be missing something easy.

Modifying comments form layout

I want to modify the layout of the comments form and after checking the templates folder, I did not find any file that has the comments form layout. Would it be possible to modify the layout?

Thanks

Allow for notification when new page comments are awaiting moderation

From http://open.silverstripe.org/ticket/3231

When someone comments on a page, if moderation is enabled their comment gets added to the "Awaiting moderation" pile.

However, there is no possibility to allow for an email sent to the site admin when this happens.

The only problem is if there's a lot of spam hitting the site, then the notification emails could be abused. This could always be amended by adding math spam protection or akismet.

[User Error] Uncaught Exception: No has_one found on class 'Comment', the has_many relation from 'BlogEntry' to 'Comment' requires a has_one on 'Comment'

Running task 'Rebuilding Cache'...
[User Error] Uncaught Exception: No has_one found on class 'Comment', the has_many relation from 'BlogEntry' to 'Comment' requires a has_one on 'Comment'
GET /dev/senda/sendarebuildingcache

Line 1552 in C:\wamp\www\framework\model\DataObject.php
Source

1543 foreach(array_reverse(ClassInfo::ancestry($this)) as $class) {
1544 if(array_key_exists($class, $remoteRelations)) return $remoteRelations[$class] . 'ID';
1545 }
1546
1547 $message = "No has_one found on class '$remoteClass'";
1548 if($type == 'has_many') {
1549 // include a hint for missing has_many that is missing a has_one
1550 $message .= ", the has_many relation from '$this->class' to '$remoteClass' requires a has_one on '$remoteClass'";
1551 }
1552 throw new Exception($message);
1553 }
1554
1555 /**
1556 * Returns a many-to-many component, as a ManyManyList.
1557 * @param string $componentName Name of the many-many component
1558 * @return ManyManyList The set of components

Trace

DataObject->getRemoteJoinField(Comments,has_many)
DataObject.php:1467
DataObject->getComponents(Comments)
call_user_func_array(Array,Array)
Object.php:745
Object->__call(Comments,Array)
ViewableData.php:363
BlogEntry->Comments()
ViewableData.php:363
ViewableData->obj(Comments,,1,,)
SSViewer.php:90
SSViewer_Scope->getObj(Comments,,1,,)
SSViewer.php:493
SSViewer_DataPresenter->getObj(Comments,,1,,)
SSViewer.php:110
SSViewer_Scope->obj(Comments,,1)
.cache.senda.templates.SendaLatestBlogsResource.ss:51
include(C:\wamp\www\silverstripe-cache\JOSE-PC\.cache.senda.templates.SendaLatestBlogsResource.ss)
SSViewer.php:952
SSViewer->includeGeneratedTemplate(C:\wamp\www\silverstripe-cache\JOSE-PC/.cache.senda.templates.SendaLatestBlogsResource.ss,SendaLatestBlogsElement,,Array,)
SSViewer.php:1019
SSViewer->process(SendaLatestBlogsElement,)
ViewableData.php:336
ViewableData->renderWith(SendaLatestBlogsResource)
SendaLatestBlogsElement.php:128
SendaLatestBlogsElement->ShowResource(Array,)
SendaShortCodes.php:354
SendaShortCodes::SendaElement(latestblogs,Array,,ShortcodeParser,SendaLatestBlogs)
SendaShortCodes.php:343
SendaShortCodes::SendaLatestBlogs(Array,,ShortcodeParser,SendaLatestBlogs,Array)
call_user_func(Array,Array,,ShortcodeParser,SendaLatestBlogs,Array)
ShortcodeParser.php:108
ShortcodeParser->callShortcode(SendaLatestBlogs,Array,)
ShortcodeParser.php:481
ShortcodeParser->replaceMarkerWithContent(DOMElement,Array)
ShortcodeParser.php:567
ShortcodeParser->parse(<div class="well well-large"> <p class="nomargin">This is a text.</p> </div> [SendaBlockquote quote="Software built on pride and love of subject is superior to software built for profit." source="Ravi  Simhambhatla, " title="CIO, Virgin Americ" titlepopup="http://www.virginameric2.com"] [SendaLatestBlogs name='general'])
SendaConfig.php:1455
SendaConfig::ContentParser([SendaBackground name="well_large"] [SendaContent id=9] [/SendaBackground] [SendaBlockquote quote="Software built on pride and love of subject is superior to software built for profit." source="Ravi  Simhambhatla, " title="CIO, Virgin Americ" titlepopup="http://www.virginameric2.com"] [SendaLatestBlogs name='general'],Page)
SendaPageDecorator.php:226
SendaPageDecorator->UpdateContentAndSearch(,,,,,,)
Object.php:998
Object->extend(UpdateContentAndSearch,)
Page.php:12
Page->UpdateContentAndSearch()
SendaRebuildingCache.php:100
{closure}()
call_user_func(Closure)
Fluent.php:472
Fluent::with_locale(en_US,Closure)
SendaRebuildingCache.php:103
SendaRebuildingCache->run(SS_HTTPRequest)
SendaDevelopmentAdmin.php:147
SendaDevelopmentAdmin->runTask(SS_HTTPRequest)
RequestHandler.php:288
RequestHandler->handleAction(SS_HTTPRequest,runTask)
Controller.php:194
Controller->handleAction(SS_HTTPRequest,runTask)
RequestHandler.php:200
RequestHandler->handleRequest(SS_HTTPRequest,DataModel)
Controller.php:153
Controller->handleRequest(SS_HTTPRequest,DataModel)
Director.php:360
Director::handleRequest(SS_HTTPRequest,Session,DataModel)
Director.php:152
Director::direct(/dev/senda/sendarebuildingcache,DataModel)
main.php:189

The solution can be the following (Comment.php):

private static $has_one = array(
    "Author"        => "Member",
            "BlogEntry"     => "BlogEntry"
);

Regards,
Jose A.

No onAfterPostComment Hook

In CommentingController.php the following appears at line 342

// extend hook to allow extensions. Also see onAfterPostComment

However this hook does not appear to exist in the code when I grep.

The reason I require it is so I can get a handle on the created comment object to populate an email to notify the site administrator that a comment has been posted. With the form data only I am unable to get the link to the comment (in the section commented out)

<?php

class PageCommentEmailNotification extends DataExtension { 
function onBeforePostComment($form) { 
    error_log("**** ON BEFORE POST COMMENT ****");
    //parent::onBeforePostComment();

       $email = new Email(); 
        $email->setTemplate('NewComment'); 
        $email->setFrom(Email::getAdminEmail()); 
        $email->setTo(Email::getAdminEmail()); 
        $email->addCustomHeader('Reply-To', Member::currentUser()->Email); 
        $email->setSubject('New Comment ' . str_replace(array("http://", "https://"), array("", ""),     Director::absoluteBaseURL())); 
        /*
        $email->populateTemplate(array( 
            'URL' => Director::absoluteBaseURL() . $this->owner->Parent()->Link(), 
            'PageTitle' => $this->owner->Parent()->Title, 
            'Comment' => $this->owner->Comment, 
            'Name' => $this->owner->Name, 
        )); 
        $email->send();
        */      } 
}

Cheers

Gordon

Convert configuration settings to YAML

Configuration layer should follow the new YAML standard for settings. Though we may need to keep some logic to allow for user configurable settings in the backend (#26)

Comment moderation issue

Hi,

Ive been trying to get the comment moderation to work for Silverstripe version 3.

In mysite/_config.php ive added the following:

Commenting::add('Foo', array(
    'require_moderation' => true,
    'require_login' => true
));

However on the site i can still add comments and they show up when im not logged in. Comments are also not added to the 'Needs Moderated' section in the backend.

I noticed in the configuration file that the Foo array is missing a second closing bracket. Is this a typo?

Please say if I've done something stupid as this seems likes a silly mistake to make.

Page comment UL + delete link failure

From http://open.silverstripe.org/ticket/6615

cms/templates/PageCommentInterface_singlecomment.ss

<ul class="actionLinks">

isset, if nobody is logged in in the backend.

So a normal user gets an empty:

<ul></ul>

Set a if arround them:

<% if CurrentMember %>
<ul class="actionLinks">
//...
</ul>
<% end_if %>

This wouldn't be enough, say if you had a forum and you have normal users logging in. You would want to check permissions to see if the current user had write access to update the comment as well.

Cheers,

PHP Error given with php version 5.3.2

PHP Error given with php version 5.3.2

Following the Install guide with a clean build Line 58 Commenting.php results in error, Missing argument 2 for Object::add_extension()

Make it more efficient to remove a lot of spam comments

Copied from http://open.silverstripe.org/ticket/4552

Currently if you are faced with the task to remove say 500 spam comments, you have a very long process ahead of you. This is because the comments show 10 at a time, and you must click on them individually to remove.

In the comments CMS interface:

  • Increase the number of comments shown on a page to 25 or more (based on performance)
  • Add a 'select all' button which selects all of them, so that you can click 'mark as spam'.

include rating in comments

Copied from http://open.silverstripe.org/ticket/6821

Comments shall include a rating. A summary of the page ratings (that is, the average rating) shall be displayed at the bottom of the DataObject (Page, BlogEntry, ...);

The kind of comment shall be customizable per DataObject (Page, BlogEntry, ...) in the backend CMS by its author:
comments with rating;
comments without rating;
rating without comment.

The format of the rating shall be customizable globally in _config.php
whether it uses stars, a thumb, or emoticons;
how many stars are available for a vote;
in case of thumbs the number of values is restricted to five (up, up-right, right, down-right, down) or three (up, right, down);
in case of emoticons the number of values is restricted to three ( ;), :|, :( );
whether the rating of each user is displayed in its comment (in addition to the summary specified in 1.);

In case of 4e) there shall be a filter available that displays only the comments with a certain ratin

Approval button for "Awaiting Moderation" Page Comments in CMS do not work

Copied from http://open.silverstripe.org/ticket/4343

Further to bug http://open.silverstripe.org/ticket/3502, the speech bubble button to the right of each comment in the "Awaiting Approval" group of the "Comments" CMS section do not work.

Visibly they seem to. The comment fades away and collapses as expected. But the actual transfer into the "Approved" group, and publishing on the site frontend never occurs. A refresh shows comment still in the original place.

Tested on 2.3.1. Windows XP. Firefox 3.0.1.1.

Clicking "this comment is spam" in-page link marks as moderated

When you use the in-page moderation links for a comment (i.e. those visible for each comment when logged in to the CMS, but viewing the live page) to mark a comment as spam using the "this comment is spam" link, the comment gets flagged as moderated when I believe it shouldn't.

Is not the point of marking a comment as spam to have it not shown? Yet using the in-page spam link results in the opposite. I'm highly doubtful this is intentional.

The problem seems to be in the CommentingController::spam() action, where it sets Moderated on the comment object:

$comment->IsSpam = true;
$comment->Moderated = true;
$comment->write();

Should the spam() and ham() methods really be explicitly changing the Moderated property? Shouldn't it instead leave it as-is and not modify the value?

[User Deprecated] Object::get_extra_config_sources is deprecated

[User Deprecated] Object::get_extra_config_sources is deprecated. add_to_class deprecated on CommentsExtension. Use get_extra_config instead. Called from Config->getUncached.
GET /dev/build?flush=all

Line 171 in C:\wamp\www\framework\dev\Deprecation.php

Regards,
Jose A.

Unable to Override Single Comment Template with AJAX in a Theme

In order to change the layout of comments on my site, I've added a template CommentsInterface_singlecomment.ss to my theme. This works when rendering a new page view but when I try to render a comment via AJAX, the template file in the comments module is used instead. This leads to inconsistency in the layout.

Move 'require moderation' to CMS

The config setting 'require_moderation' should be settable from in the CMS by plain users rather than needing a developer for it.
Move to CMS main settings or comment section settings.

Additional Akismet fields included in PageComment submission

Copied from http://open.silverstripe.org/ticket/6259

Attached is a patch to include:

a) author IP b) author URL/website c) author email

in addition to the author name & content that were previously included in Akismet spam-checking submissions.

I know that PageComments? will soon exist as a standalone module & hope that Akismet is well integrated. We've recently removed ReCaptcha? in favor of Akismet content analysis in order to "lower the barrier" for discussion on paulickreport.com -- and as a prerequisite patched the SpamProtection? module to allow for form exemptions [see #6258]

Patch here: http://open.silverstripe.org/attachment/ticket/6259/PageCommentInterface.patch

Awaiting Moderation count incorrect

Coped from http://open.silverstripe.org/ticket/4856

In the Comment Admin page on SS 2.4a, the Awaiting Moderation count (number of comments in that section) appears to just be counting the Approved comments.

For instance I see:

-Comments
--Approved (14)
--Awaiting moderation (14)
--Spam (8)
even though I only have one comment awaiting moderation.

Also, the counts don't update when you manipulate comments (approve, delete spam ones etc) - you have to manually refresh the page.

Bulk "mark as spam" causes 500 error and doesn't work as expected

Currently using the dev-master of comments on a local dev site running Apache (AMP) and a Testing server running Nginx, PHP, MariaDB.

On bulk "mark as spam" I get the following in the console (and it doesn't action the spam removal):

POST http:///admin/comments/EditForm/field/CommentsModerated/bulkaction/markasspam?cacheBuster=1390879973245 500 (Internal Server Error) lib.js?m=1390711664:531

send lib.js?m=1390711664:531

jQuery.extend.ajax lib.js?m=1390711664:498

$.entwine.onclick GridFieldBulkManager.js?m=1390710647:138

one lib.js?m=1390711664:1632

prxy lib.js?m=1390711664:1660

jQuery.event.dispatch lib.js?m=1390711664:207

elemData.handle.eventHandle

Please let me know if you need more detail

comments shall utilize the memberprofiles module, if present

Copied from http://open.silverstripe.org/ticket/6823

Each comment shall display the name of the user who wrote it;

  • Already implemented as long as the memberprofiles module overloads Name

The name of the user shall be a link to its memberprofile, if the memberprofiles module present;
The link shall not be readable by robots in order to avoid spam.

  • Good point, currently it shows a link if the user fills in their website URL, but adding a Link() fallback to the template is easy

Should the memberprofiles module be missing, then there shall be a field for the address of the user in the comments form.
In SS2 this was the URL field, but this field should allow addresses of any kind, such as webpage URL, E-Mail address, ICQ address, ...);

  • The module allows email, url (2.* didn't have email) and you can easily extend it to support twitter (as per the silverstripe.org blog). Will probably want to document how this is done rather than providing all the options built in. Off topic but posting via facebook connect / twitter oauth could be an fun project for someone.

The address of the user shall be a link under its name. The link shall not be readable by robots in order to avoid spam.
The author of a DataObject (Page, BlogEntry, ...) shall specify on the back-end CMS whether a user can add
one comment only;
unlimited comments.

  • Interesting use case, but I don't think it's common enough to require it to be an option for every site? How would it uniquely identify a 'person' who wasn't logged in? Email address perhaps? but then to get around it you could use [email protected], [email protected] which isn't entirely foolproof.

If a user unregisters from the website, he/she shall be asked whether its comments should be removed from the website;
If the user specifies to retain its comments, he/she shall be asked if his/her address shall be made available as a link under its name in the comments.

  • That would be a feature of the memberprofiles module and not the comments module so you'll need to submit an enhancement request on the issue tracker for memberprofiles (github).

Cannot edit Comments in latest SS 3.1 master

When editing a comment in the CMS, for example to mark a comment as Moderated or as Spam, the following error occurs when trying to Save: http://spdr.me/Pu6w

Seems that a change since 3.1-beta3 has caused changes to the comment EditForm:

As I can confirm the module works fine in 3.1-beta3, just not in the current 3.1 master.

No link on CMS to moderate the comments

Hello

I have a issue on my site where the comments button in the side bar isnt showing up. I can get to it by going /comments and that works. It just the fact there is no button to it.

Is there something i need to add into the code base or should this work out of the box.

Thanks
Hadlee

Memory usage

Copied from http://open.silverstripe.org/ticket/4589

I recently had an issue where one of our sites was hit by a lot of spam comments through the blog. As a result there were over 130,000 spam comments posted and saved to PageComment?.

This resulted in any blog holder pages using over 530mb of ram in order to load. Once I had traced the problem it was pretty east to sort out, but it seems a bit odd that the blog module would use that much ram to simply summarise the number of comments.

Banal points out that it sounds like the module is loading all the comments into a dataobject, which, if it is true, seems like quite a memory intensive way of summarising the number of comments.

On larget sites, with several blogs, it seems likely that you could easily get thousands of comments, so it would be nice if this were slightly more optimised.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.