• Stars
    star
    260
  • Rank 152,276 (Top 4 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Laravel package to manage your polls

Larapoll

A Laravel package to manage your polls

Installation:

First, install the package through Composer.

composer require inani/larapoll 

You can skip the next two steps

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

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


'aliases' => [
        ...
        'PollWriter' => Inani\Larapoll\PollWriterFacade::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

// to 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

LaraPoll ships with a UI a system to manage polls, very easy and fast. you need practically nothing to start using it. Please visit the link for the explantation of the interface.

Set up the admin middleware's name

A larapoll_config.php file will be added where you can put the name of the middleware 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_MIDDLEWARE = auth
LARAPOLL_ADMIN_AUTH_GUARD = web
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
{{ PollWriter::draw(Inani\Larapoll\Poll::find(77)) }}

Override views

You can override the views related to the results page and both pages checkbox/radio via the same larapoll_config.php file in the config folder.

Route of the vote action

{{ route('poll.vote', $id) }}

Data passed to result view

  • $question : the question of the poll
  • $options : array of objects holding (name, percent, votes).

Data passed to the poll checkbox/radio

  • $question : the question
  • $options : holding the name and id of the option.

More Repositories

1

messager

A convenient way to handle messages between users in a simple way
PHP
153
star
2

maravel-permissions

Because in the Maravelous univer every user deserves super power
PHP
141
star
3

laravel-nova-configuration

Use Configuration inputs instead of the env/config files. Good news for the clients!
Vue
40
star
4

chibi

A mini PHP framework
PHP
35
star
5

oxfordapi-wrapper

A PHP/Laravel Wrapper for oxford dictionary API
PHP
27
star
6

nova-resource-maker

A Nova tool that will help you to generate fields array for the resource.
PHP
25
star
7

LazyBelongsToMany

A lightweight implementation of Laravel's belongs To many
PHP
24
star
8

PHPValidate

A light library to validate inputs
PHP
11
star
9

Dental

A Dental App built using Laravel 5.2
HTML
11
star
10

laravel-same-request

The Missing check on Laravel Request Unicity.
PHP
10
star
11

corona-wash-reminder

A mobile app to remind you to wash your hand
TypeScript
8
star
12

geeksblabla

This is my Nuxt Js version of Geeksblabla of #DevC
JavaScript
8
star
13

laravel-controllers-generator

A Laravel package that will generate for you controllers used in routes
PHP
7
star
14

vuejs-101

HTML
4
star
15

parser

PHP
4
star
16

filters

PHP
3
star
17

chibi-orm

PHP
2
star
18

chibi-console

PHP
2
star
19

psd-to-html

PSDs converted to HTML/CSS
CSS
1
star
20

php-array-every-day

A repo where I put every day some code to understand and get used to the important arrays method
PHP
1
star
21

The-Coding-Train

Notes&Codes of The Coding Train Tutorials
Processing
1
star
22

docker-101

PHP
1
star
23

webpack-101

JavaScript
1
star
24

Uploader

a simple Class to make your life easier while handling Uploads
1
star
25

chibi-app

The basic app to be used with chibi framework
PHP
1
star
26

presta-module

PHP
1
star
27

realtime-with-socket-io

Real time chat with Socketio & Vuejs
HTML
1
star