Git Product home page Git Product logo

larapoll's Introduction

Larapoll

A Laravel package to manage your polls

Installation:

First, install the package through Composer.

composer require inani/larapoll ^2.0

Then include the service provider inside config/app.php.

'providers' => [
    ...
    Inani\Larapoll\LarapollServiceProvider::class,
    ...
];

Publish migrations, and migrate

php artisan vendor:publish
php artisan migrate

Setup a Model

To setup a model all you have to do is add (and import) the Voter trait.

use Inani\Larapoll\Traits\Voter;
class User extends Model
{
    use Voter;
    ...
}

Creating, editing and closing polls

Create poll

// create the question
$poll = new Poll([
            'question' => 'What is the best PHP framework?'
]); 

// attach options and how many options you can vote to
// more than 1 options will be considered as checkboxes
$poll->addOptions(['Laravel', 'Zend', 'Symfony', 'Cake'])
                     ->maxSelection() // you can ignore it as well
                     ->generate();
$poll->isRadio(); // true
$poll->isCheckable();// false
$poll->optionsNumber(); // 4

attach and detach options to a poll

// too add new elements 
$bool = $poll->attach([
            'Yii', 'CodeIgniter'
]);
$poll->optionsNumber(); // 6

// to remove options(not voted yet)
$option = $poll->options()->first(); // get first option
$bool = $poll->detach($option); 
$poll->optionsNumber(); // 5

Lock a poll

$bool = $poll->lock();

Unlock a closed poll

$bool = $poll->unLock();

Remove a poll

All related options and votes will be deleted once the Poll is removed

$bool = $poll->remove();

Voting

Making votes

// a voter(user) picks a poll to vote for
// only ids or array of ids are accepted
$voter->poll($poll)->vote($voteFor->getKey());

Result of votes

// get results unordered
$poll->results()->grab();
// get results in order (desc)
$poll->results()->inOrder();

CRUD HANDLER

Set up the admin middelware's name

A larapoll_config.php file will be added where you can put the name of the middelware used to protect the access and other things like pagination and prefix to protect your routes Add this line in the .env too

LARAPOLL_ADMIN_AUTH_MIDDELWARE = auth
LARAPOLL_PAGINATION = 10
LARAPOLL_PREFIX = Larapoll

FRONT END USE

With Larapoll its easy to integrate a poll for users to vote, you only have to specify two things

  • the ID of the poll
  • the user(voter) instance
{{ PollWriter::draw(77, auth()->user()) }}

larapoll's People

Contributors

akiyamasm avatar svenluijten avatar

Watchers

 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.