Manage my subscriptions page

This commit is contained in:
James Brooks
2016-02-09 19:41:22 +00:00
committed by Graham Campbell
parent 140970ac37
commit af0e578a44
9 changed files with 141 additions and 85 deletions

View File

@@ -34,7 +34,7 @@ class ComposerServiceProvider extends ServiceProvider
$factory->composer('*', CurrentUserComposer::class);
$factory->composer(['index'], MetricsComposer::class);
$factory->composer(['index', 'incident', 'subscribe', 'signup'], StatusPageComposer::class);
$factory->composer(['index', 'incident', 'subscribe', 'signup', 'dashboard.settings.theme'], ThemeComposer::class);
$factory->composer(['index', 'incident', 'subscribe.*', 'signup', 'dashboard.settings.theme'], ThemeComposer::class);
$factory->composer('dashboard.*', DashboardComposer::class);
$factory->composer(['setup', 'dashboard.settings.localization'], TimezoneLocaleComposer::class);
}

View File

@@ -42,7 +42,7 @@ class SubscribeController extends Controller
*/
public function showSubscribe()
{
return View::make('subscribe')
return View::make('subscribe.subscribe')
->withAboutApp(Markdown::convertToHtml(Config::get('setting.app_about')));
}
@@ -127,4 +127,24 @@ class SubscribeController extends Controller
return Redirect::route('status-page')
->withSuccess(sprintf('<strong>%s</strong> %s', trans('dashboard.notifications.awesome'), trans('cachet.subscriber.email.unsubscribed')));
}
/**
* Shows the subscription manager page.
*
* @return \Illuminate\View\View
*/
public function showManage()
{
if (!($code = Binput::get('subscriber'))) {
throw new NotFoundHttpException();
}
$subscriber = Subscriber::where('verify_code', '=', $code)->first();
if (!$subscriber || !$subscriber->is_verified) {
throw new BadRequestHttpException();
}
return View::make('subscribe.manage')->withSubscriber($subscriber);
}
}

View File

@@ -29,17 +29,20 @@ class SubscribeRoutes
*/
public function map(Registrar $router)
{
$router->group(['middleware' => ['web', 'ready', 'localize'], 'as' => 'subscribe.'], function ($router) {
$router->group(['middleware' => ['subscribers']], function ($router) {
$router->get('subscribe', [
'as' => 'subscribe',
'uses' => 'SubscribeController@showSubscribe',
]);
$router->group(['middleware' => ['web', 'ready', 'localize', 'subscribers'], 'as' => 'subscribe.'], function ($router) {
$router->get('subscribe', [
'as' => 'subscribe',
'uses' => 'SubscribeController@showSubscribe',
]);
$router->post('subscribe', [
'uses' => 'SubscribeController@postSubscribe',
]);
});
$router->post('subscribe', [
'uses' => 'SubscribeController@postSubscribe',
]);
$router->get('subscribe/manage', [
'as' => 'subscribe.manage',
'uses' => 'SubscribeController@showManage',
]);
$router->get('subscribe/verify/{code}', [
'as' => 'verify',

View File

@@ -63,6 +63,10 @@ return [
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',

View File

@@ -1,47 +0,0 @@
@extends('layout.master')
@section('content')
<div class="pull-right">
<p><a class="btn btn-success btn-outline" href="/"><i class="ion-home"></i></a></p>
</div>
<div class="clearfix"></div>
@if($app_banner)
<div class="row app-banner">
<div class="col-md-12 text-center">
@if($app_domain)
<a href="{{ $app_domain }}"><img src="data:{{ $app_banner_type }};base64, {{ $app_banner }}" class="banner-image img-responsive"></a>
@else
<img src="data:{{ $app_banner_type }};base64, {{ $app_banner }}" class="banner-image img-responsive">
@endif
</div>
</div>
@endif
@include('dashboard.partials.errors')
<div class="panel panel-meassage">
<div class="panel-heading">
<strong>{{ trans('cachet.signup.title') }}</strong>
</div>
<div class="panel-body">
<form action="{{ route('signup.invite', ['code' => $code]) }}" method="post" class="form">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="username">{{ trans('cachet.signup.username') }}</label>
<input class="form-control" type="text" name="username" value="{{ $username }}">
</div>
<div class="form-group">
<label for="email">{{ trans('cachet.signup.email') }}</label>
<input class="form-control" type="email" name="email" value="{{ $email }}">
</div>
<div class="form-group">
<label for="password">{{ trans('cachet.signup.password') }}</label>
<input class="form-control" type="password" name="password">
</div>
<button type="submit" class="btn btn-success">{{ trans('forms.signup') }}</button>
</form>
</div>
</div>
@stop

View File

@@ -1,26 +0,0 @@
@extends('layout.master')
@section('content')
<div class="pull-right">
<p><a class="btn btn-success btn-outline" href="/"><i class="ion-home"></i></a></p>
</div>
<div class="clearfix"></div>
@include('dashboard.partials.errors')
<div class="panel panel-meassage">
<div class="panel-heading">
<strong>{{ trans('cachet.subscriber.subscribe') }}</strong>
</div>
<div class="panel-body">
<form action="{{ route('subscribe.subscribe', [], false) }}" method="post" class="form">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<input class="form-control" type="email" name="email">
</div>
<button type="submit" class="btn btn-success">{{ trans('cachet.subscriber.button') }}</button>
</form>
</div>
</div>
@stop

View File

@@ -0,0 +1,29 @@
@extends('layout.master')
@section('content')
<div class="pull-right">
<p><a class="btn btn-success btn-outline" href="/"><i class="ion-home"></i></a></p>
</div>
<div class="clearfix"></div>
@include('dashboard.partials.errors')
<div class="panel panel-default">
<div class="panel-heading"><strong>{{ $subscriber->email }}</strong></div>
@if($subscriber->subscriptions->count() > 0)
<div class="panel-body">
<p>{{ trans('cachet.subscriber.manage.my_subscriptions') }}</p>
</div>
<div class="list-group">
@foreach($subscriber->subscriptions as $subscription)
<div class="list-group-item">{{ $subscription->component->name }}</div>
@endforeach
</div>
@else
<div class="panel-body">
<p>{{ trans('cachet.subscriber.manage.no_subscriptions') }}</p>
</div>
@endif
</div>
@stop

View File

@@ -0,0 +1,47 @@
@extends('layout.master')
@section('content')
<div class="pull-right">
<p><a class="btn btn-success btn-outline" href="/"><i class="ion-home"></i></a></p>
</div>
<div class="clearfix"></div>
@if($app_banner)
<div class="row app-banner">
<div class="col-md-12 text-center">
@if($app_domain)
<a href="{{ $app_domain }}"><img src="data:{{ $app_banner_type }};base64, {{ $app_banner }}" class="banner-image img-responsive"></a>
@else
<img src="data:{{ $app_banner_type }};base64, {{ $app_banner }}" class="banner-image img-responsive">
@endif
</div>
</div>
@endif
@include('dashboard.partials.errors')
<div class="panel panel-meassage">
<div class="panel-heading">
<strong>{{ trans('cachet.signup.title') }}</strong>
</div>
<div class="panel-body">
<form action="{{ route('signup.invite', ['code' => $code]) }}" method="post" class="form">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="username">{{ trans('cachet.signup.username') }}</label>
<input class="form-control" type="text" name="username" value="{{ $username }}">
</div>
<div class="form-group">
<label for="email">{{ trans('cachet.signup.email') }}</label>
<input class="form-control" type="email" name="email" value="{{ $email }}">
</div>
<div class="form-group">
<label for="password">{{ trans('cachet.signup.password') }}</label>
<input class="form-control" type="password" name="password">
</div>
<button type="submit" class="btn btn-success">{{ trans('forms.signup') }}</button>
</form>
</div>
</div>
@stop

View File

@@ -0,0 +1,26 @@
@extends('layout.master')
@section('content')
<div class="pull-right">
<p><a class="btn btn-success btn-outline" href="/"><i class="ion-home"></i></a></p>
</div>
<div class="clearfix"></div>
@include('dashboard.partials.errors')
<div class="panel panel-meassage">
<div class="panel-heading">
<strong>{{ trans('cachet.subscriber.subscribe') }}</strong>
</div>
<div class="panel-body">
<form action="{{ route('subscribe.subscribe', [], false) }}" method="post" class="form">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<input class="form-control" type="email" name="email">
</div>
<button type="submit" class="btn btn-success">{{ trans('cachet.subscriber.button') }}</button>
</form>
</div>
</div>
@stop