Giter Club home page Giter Club logo

nova-comments's Introduction

A commenting resource tool for Nova apps

Latest Version on Packagist Total Downloads Codacy Badge

This package contains an inline commenting form for any resource to easily add comments. Think a simple version of Disqus for Nova!

Commenter Tool

screenshot of the commenter resource tool

Simple Comment Panel

screenshot of the comments panel

Requirements

This Nova resource tool requires Nova 2.0 or higher.

Installation

You can install this package in a Laravel app that uses Nova via composer:

composer require kirschbaum-development/nova-comments

Next, we need to run migrations. Auto-discovery of this package's service provider helps with that!

php artisan migrate

And lastly, any model that you want to have comments needs the Commentable trait added to it.

use KirschbaumDevelopment\NovaComments\Commentable;

class Post extends Model
{
    use Commentable;
    
    // ...
}

If you would like to publish the config for this package, run:

php artisan vendor:publish

And choose the provider for this package: KirschbaumDevelopment\NovaComments\NovaCommentsServiceProvider

This package requires that it has a commenter, which is simply a User. Nova Comments automatically defaults to the App\Nova\User resource, but can easily be changed in the publishable config file.

Usage

There are two components that ship with this package, the Commenter and a CommentsPanel.

Commenter

The first, and most useful, component is the Commenter. It is a resource tool that allows you to insert a commenting panel directly onto any Nova resource. This panel allows you to add a comment directly to a resource without needing to create one from the respective create view. The newly created comments show up below the commenting form with live updating.

Simply add the KirschbaumDevelopment\NovaComments\Commenter resource tool in your Nova resource:

namespace App\Nova;

use KirschbaumDevelopment\NovaComments\Commenter;

class Post extends Resource
{
    // ...
    
    public function fields(Request $request)
    {
        return [
            // ...
            
            new Commenter(),

            // ...
        ];
    }
}

Now you can comment from the detail view of any resource you've attached the Commenter to! Happy commenting!

Comments Panel

As a convenience, a prebuilt comments panel has been created for you. All you need to do is simply add it to your resource and enjoy the pre-built goodness.

namespace App\Nova;

use KirschbaumDevelopment\NovaComments\Commenter;

class Post extends Resource
{
    // ...
    
    public function fields(Request $request)
    {
        return [
            // ...
            
            new CommentsPanel(),

            // ...
        ];
    }
}

Of course you are completely free to create your own comments panel, but to get up and running quickly, we recommend using this panel.

Sidebar Navigation

Occasionally you may want to hide comments from the sidebar. You can easily do this by setting the respective config value to false. Make sure to first publish the configs.

'available-for-navigation' => false

Pagination caveat

Due to an limitation in how Nova paginates results, there is currently no way to set the perPage value for the number of comments that will display at a time from a configuration value. Nova's default value is 5 per page. If you would like to set this to a different value, such as 25, we recommend you extend the Commenter and set this value with the follwing code:

use KirschbaumDevelopment\NovaComments\Commenter as NovaCommenter;

class Commenter extends NovaCommenter
{
    /**
     * The number of resources to show per page via relationships.
     *
     * @var int
     */
    public static $perPageViaRelationship = 25;
}

Then use this class instead of the default Commenter class within your resources.

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] or [email protected] instead of using the issue tracker.

Credits

Sponsorship

Development of this package is sponsored by Kirschbaum Development Group, a developer driven company focused on problem solving, team building, and community. Learn more about us or join us!

License

The MIT License (MIT). Please see License File for more information.

nova-comments's People

Contributors

brandonferens avatar eugenefvdm avatar ninjasitm avatar dependabot[bot] avatar wilkerwma avatar

Watchers

James Cloos avatar

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.