group components on manage subscriptions page
This commit is contained in:
@@ -18,6 +18,7 @@ use CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriptionCommand;
|
||||
use CachetHQ\Cachet\Bus\Commands\Subscriber\UpdateSubscriberSubscriptionCommand;
|
||||
use CachetHQ\Cachet\Bus\Commands\Subscriber\VerifySubscriberCommand;
|
||||
use CachetHQ\Cachet\Models\Component;
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
use CachetHQ\Cachet\Models\Subscriber;
|
||||
use CachetHQ\Cachet\Models\Subscription;
|
||||
use GrahamCampbell\Binput\Facades\Binput;
|
||||
@@ -147,15 +148,19 @@ class SubscribeController extends Controller
|
||||
}
|
||||
|
||||
$subscriber = Subscriber::where('verify_code', '=', $code)->first();
|
||||
$usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id');
|
||||
$componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
|
||||
$ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
|
||||
|
||||
if (!$subscriber) {
|
||||
throw new BadRequestHttpException();
|
||||
}
|
||||
|
||||
return View::make('subscribe.manage')
|
||||
->withComponents(Component::all())
|
||||
->withUngroupedComponents($ungroupedComponents)
|
||||
->withSubscriber($subscriber)
|
||||
->withSubscriptions($subscriber->subscriptions->pluck('component_id')->all());
|
||||
->withSubscriptions($subscriber->subscriptions->pluck('component_id')->all())
|
||||
->withComponentGroups($componentGroups);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -97,4 +97,26 @@ class ComponentGroupPresenter extends BasePresenter implements Arrayable
|
||||
'lowest_human_status' => $this->lowest_human_status(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if any of the contained components have active subscriptions
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function has_subscriber($subscriptions)
|
||||
{
|
||||
$enabled_components = $this->wrappedObject->enabled_components()->orderBy('order')->pluck('id')->toArray();
|
||||
$intersected = array_intersect($enabled_components, $subscriptions);
|
||||
return count($intersected) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the class for collapsed/uncollapsed groups on the subscription form.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function collapse_class_with_subscriptions($subscriptions)
|
||||
{
|
||||
return $this->has_subscriber($subscriptions) ? 'ion-ios-minus-outline' : 'ion-ios-plus-outline';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user