Skip to content

Commit

Permalink
Merge branch 'master' of github.com:vluzrmos/lumen-slackin
Browse files Browse the repository at this point in the history
  • Loading branch information
vluzrmos committed Dec 15, 2015
2 parents 2d39f78 + 897ddde commit 869f634
Show file tree
Hide file tree
Showing 10 changed files with 188 additions and 9 deletions.
11 changes: 9 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,28 @@ CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

# Your Team Slack Token
# (REQUIRED) Your Team Slack Token
SLACK_TOKEN=YOUR-SLACK-TOKEN-WITH-ADMIN-PRIVILEGIES

# (OPTIONAL) Indicates if should show the slack status message with users ative/total registered.
SLACK_STATUS_ENABLED=true

#####################################################################################
## Language Detector Configurations ##
## see https://github.com/vluzrmos/laravel-language-detector ##
#####################################################################################

#Indicates whenever should autodetect the language (it could be removed)
LANG_DETECTOR_AUTODETECT=true

#The driver to use, default is browser
LANG_DETECTOR_DRIVER="browser"

#The segment to use in uri or subdomain driver, default 0 (it could be removed)
LANG_DETECTOR_SEGMENT=0

#A comma-separated list of available languages on application
LANG_DETECTOR_LANGUAGES="en,pt_BR"
LANG_DETECTOR_LANGUAGES="en,pt_BR,de_DE"

#To aliase the language use the notation ":", "=", ":=" or "=>" to separate the alias and its value.
# LANG_DETECTOR_LANGUAGES="en, en-us:en, pt-br:pt_BR"
17 changes: 16 additions & 1 deletion app/Console/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;

use Laravel\Lumen\Console\Kernel as ConsoleKernel;
use Symfony\Component\Finder\Finder;

class Kernel extends ConsoleKernel
{
Expand All @@ -25,6 +27,19 @@ class Kernel extends ConsoleKernel
protected function schedule(Schedule $schedule)
{
// Schedule to check the users status
$schedule->command('slack:status')->cron('* * * * *')->withoutOverlapping();
$schedule->command('slack:status')->everyMinute()->withoutOverlapping();

// Remove previous cache of "withoutOverlapping"
$schedule->call(function () {
$files = Finder::create()->files()
->in(storage_path('framework'))
->depth(0)
->date('< today')
->name('schedule-*');

foreach ($files as $file) {
@unlink($file->getRealPath());
}
})->daily();
}
}
5 changes: 4 additions & 1 deletion app/Http/Controllers/IndexController.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,13 @@ public function __construct(Cache $cache, SlackStatusService $slack)
public function getIndex()
{
$data = [
'totals' => $this->slack->getUsersStatus(),
'team' => $this->slack->getTeamInfo(),
];

if (env('SLACK_STATUS_ENABLED', true)) {
$data['totals'] = $this->slack->getUsersStatus();
}

return view('slack.index', $data);
}

Expand Down
2 changes: 1 addition & 1 deletion public/build/js/all.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/js/all.js.map

Large diffs are not rendered by default.

18 changes: 15 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Change the <code>SLACK_TOKEN</code> to the token of your user on slack team, wit

## Run

## Queue
Start the queue listener:

```bash
Expand All @@ -44,14 +45,23 @@ php artisan queue:listen --timeout=240 1>> /dev/null 2>&1 &
@reboot php /path/to/that/project/artisan queue:listen --timeout=240 1>> /dev/null 2>&1
```

### Scheduled Tasks (Optional)

You may also need to add that command to your cronjob, that will update the users status on every minute:

```bash
* * * * * php /path/to/that/project/artisan schedule:run 1>> /dev/null 2>&1
```

That will make your queue run in background and ignoring error messages.


**Note:** If you do not want to use that feature, you just need to set the environment
variable `SLACK_STATUS_ENABLED` to `false` on your `.env` file, that will hide the message
about users active (online/total) of your team on the homepage:

SLACK_STATUS_ENABLED=false

### HTTP Server

Start the http server:

Expand All @@ -78,8 +88,9 @@ Example:
By default the system will try to detect if the browser language is available on <code>resources/lang</code>,
if available will setup. Available languages:

* en
* pt-br
* English - en
* Porguese Brazil - pt_BR
* German - de_DE

## Mobile Devices

Expand All @@ -92,6 +103,7 @@ Your team are using this project? Put your link here:
- [CakePHP Brasil](http://slack.cakephpbrasil.com.br/)
- [Laravel Brasil](http://slack.laravel.com.br)
- [VueSlack](http://vueslack.com)
- [Sencha Brasil](http://sencha-br.wemersonjanuario.com.br)

> Note: Consider to send a PR to master branch.
Expand Down
5 changes: 5 additions & 0 deletions resources/lang/de_DE/messages.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

return [
'copyright' => 'Mit Liebe gemacht <i class="glyphicon glyphicon-heart" style="color: red;"></i> von <a href="https://github.com/vluzrmos" target="_blank">Vluzrmos</a> + <a href="http://lumen.laravel.com" target="_blank">Lumen Framework</a> - Fork auf <a href="https://github.com/vluzrmos/lumen-slackin" target="_blank">Github</a>.',
];
23 changes: 23 additions & 0 deletions resources/lang/de_DE/slackin.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

return [
'command_done' => 'Erledigt!',

'invited' => 'Einladung gesendet, bitte Überprüfe deinen Posteingang!',

'join' => 'Trete <b class="team-name">:team</b> auf Slack bei.',

'placeholders' => [
'username' => 'Gib deinen Vor- und Nachnamen ein.',
'email' => '[email protected]',
],

'submit' => 'Beitreten',

'updating_status' => 'Prüfe auf neuen Status...',

'updating_team_info' => 'Prüfe Slack Teaminformation...',

'users_online' => '{0} Zur Zeit ist von <b class="users-total">:total</b> registrierten Nutzern keiner online.|{1} Es ist zur Zeit <b class="users-online">:active</b> Nutzer von <b class="users-total">:total</b> registrierten Nutzern online.|[2,Inf] Es sind zur Zeit <b class="users-online">:active</b> von <b class="users-total">:total</b> registrierten Nuztern online.',

];
112 changes: 112 additions & 0 deletions resources/lang/de_DE/validation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
<?php

return [

/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/

'accepted' => 'Das Feld :attribute musss akzeptiert werden.',
'active_url' => 'Das Feld :attribute ist keine gültige URL.',
'after' => 'Das Feld :attribute muss ein Datum nach :date sein.',
'alpha' => 'Das Feld :attribute darf nur Buchstaben enthalten.',
'alpha_dash' => 'Das Feld :attribute darf nur Buchstaben, Zahlen und Bindestriche enthalten.',
'alpha_num' => 'Das Feld :attribute darf nur Buchstaben und Zahlen enthalten.',
'array' => 'Das Feld :attribute muss ein Array sein.',
'before' => 'Das Feld :attribute muss ein Datum vor :date sein.',
'between' => [
'numeric' => 'Der Wert von :attribute muss zwischen :min und :max liegen.',
'file' => 'Die Datei :attribute muss zwischen :min und :max Kilobyte groß sein.',
'string' => 'Die Länge des Feldes :attribute muss zwischen :min und :max Zeichen liegen.',
'array' => 'Die Länge des Array :attribute muss zwischen :min und :max liegen.',
],
'boolean' => 'Das Feld :attribute muss "wahr" oder "falsch" sein.',
'confirmed' => 'Die :attribute Bestätigung stimmt nicht überein.',
'date' => 'Das Feld :attribute ist kein gültiges Datum.',
'date_format' => 'Das Feld :attribute entspricht nicht dem Format :format.',
'different' => 'Die Felder :attribute und :other müssen sich unterscheiden.',
'digits' => 'Das Feld :attribute muss :digits Zeichen haben.',
'digits_between' => 'Das Feld muss eine Länge :attribute zwischen :min und :max Zeichen haben.',
'email' => 'Das Feld :attribute muss eine gültige E-Mail-Adresse sein.',
'filled' => 'Das Feld :attribute wird benötigt.',
'exists' => 'Das ausgewählte Feld :attribute ist ungültig.',
'image' => 'Das Feld :attribute muss ein Bild sein.',
'in' => 'Das ausgewählte Feld :attribute ist ungültig.',
'integer' => 'Das Feld :attribute muss eine ganze Zahl sein.',
'ip' => 'Das Feld :attribute muss eine gültige IP-Adresse sein.',
'max' => [
'numeric' => 'Der Wert von :attribute darf nicht größer als :max sein.',
'file' => 'Die Datei :attribute darf nicht größer als :max Kilobyte sein.',
'string' => 'Die Länge des Feldes :attribute darf nicht größer als :max Zeichen sein.',
'array' => 'Die Länge des Arrays :attribute darf nicht größer als :max sein.',
],
'mimes' => 'Das Feld :attribute muss eine Datei vom Typ :values sein.',
'min' => [
'numeric' => 'Der Wert von :attribute muss mindestens :min sein.',
'file' => 'Die Datei :attribute muss mindestens :min Kilobyte groß sein.',
'string' => 'Die Länge des Feldes :attribute muss mindestens :min Zeichen lang sein.',
'array' => 'Die Länge des Array :attribute muss mindestens :min betragen.',
],
'not_in' => 'Das ausgewählte Feld :attribute ist ungültig.',
'numeric' => 'Das Feld :attribute muss eine Zahl sein.',
'regex' => 'Das Format des Felds :attribute ist ungültig.',
'required' => 'Das Feld :attribute muss angegeben werden.',
'required_if' => 'Das Feld :attribute muss angegeben werden, wenn :other :value ist.',
'required_with' => 'Das Feld :attribute muss angegeben werden :values angegeben ist.',
'required_with_all' => 'Das Feld :attribute muss angegeben werden, wenn :values angegeben ist.',
'required_without' => 'Das Feld :attribute muss angegeben werden :values nicht angegeben ist.',
'required_without_all' => 'Das Feld :attribute muss angegeben werden, wenn keines von :values angegeben sind.',
'same' => 'Die Felder :attribute und :other müssen übereinstimmen.',
'size' => [
'numeric' => 'Das Feld :attribute muss :size groß sein.',
'file' => 'Die Datei :attribute muss :size Kilobyte groß sein.',
'string' => 'Die Länge des Feldes :attribute muss :size Zeichen lang sein.',
'array' => 'Die Länge des Array :attribute muss :size betragen.',
],
'unique' => 'Der Wert für das Feld :attribute wurde bereits verwendet.',
'url' => 'Das Format des Felder :attribute ist ungültig.',
'timezone' => 'Das Feld :attribute muss eine gültige Zeitzone sein.',
'wrong' => 'Etwas ist schief gelaufen.',
'min_words' => 'Gib mindestens :words Wort ein.',

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

'custom' => [
'username' => [
'min_words' => 'Gib bitte deinen Vor- und Nachnamen ein',
],
],

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/

'attributes' => [
'username' => 'Benutzername',
'email' => 'E-Mail-Adresse',
],

];
2 changes: 2 additions & 0 deletions resources/views/slack/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@
{!! trans('slackin.join', ['team' => $team['name']]) !!}
</div>

@if(isset($totals, $totals['active'], $totals['total']))
<div id="status" >
{!! trans_choice('slackin.users_online', $totals['active'], $totals) !!}
</div>
@endif

<div id="form-invite" class="col-sm-6 col-sm-offset-3">
<div id="validation-message"></div>
Expand Down

0 comments on commit 869f634

Please sign in to comment.