Skip to content

Commit

Permalink
Merge pull request #8 from builderscon/topic/add-admin
Browse files Browse the repository at this point in the history
Make it possible to add admins via the web ui
  • Loading branch information
lestrrat committed Jul 22, 2016
2 parents 459c2a9 + 89a825d commit d7068b8
Show file tree
Hide file tree
Showing 3 changed files with 148 additions and 32 deletions.
2 changes: 1 addition & 1 deletion lib/Octav/AdminWeb.pm
Expand Up @@ -132,7 +132,7 @@ sub startup {
}
}

for my $subr (qw(date venue featured_speaker sponsor)) {
for my $subr (qw(administrator date venue featured_speaker sponsor)) {
$r->post("/conference/$subr/add")->to("conference#${subr}_add");
$r->post("/conference/$subr/remove")->to("conference#${subr}_remove");
}
Expand Down
92 changes: 92 additions & 0 deletions lib/Octav/AdminWeb/Controller/Conference.pm
Expand Up @@ -302,4 +302,96 @@ sub sponsor_remove {
$self->redirect_to($self->url_for("/conference/lookup")->query(id => $self->stash("conference")->{id}));
}

sub administrator_add {
my $self = shift;
if (!$self->_lookup()) {
return
}

my %params = (
conference_id => $self->stash("conference")->{id},
user_id => $self->stash('ui_user')->{id},
);

my @columns = ("admin_id");
foreach my $column (@columns) {
if (my $v = $self->param($column)) {
$params{$column} = $v;
}
}
my $client = $self->client;
if (! $client->add_conference_admin(\%params)) {
# XXX handle this properly
die $client->last_error();
}

$self->redirect_to($self->url_for("/conference/lookup")->query(id => $self->stash("conference")->{id}));
}

sub administrator_remove {
my $self = shift;
if (!$self->_lookup()) {
return
}

my %params = (
conference_id => $self->stash("conference")->{id},
id => $self->param("id"),
user_id => $self->stash('ui_user')->{id},
);
my $client = $self->client;
if (! $client->delete_conference_admin(\%params)) {
# XXX handle this properly
die $client->last_error();
}

$self->redirect_to($self->url_for("/conference/lookup")->query(id => $self->stash("conference")->{id}));
}

sub sponsor_add {
my $self = shift;
if (!$self->_lookup()) {
return
}

my %params = (
conference_id => $self->stash("conference")->{id},
user_id => $self->stash('ui_user')->{id},
);

my @columns = ("name", "logo_url1", "logo_url2", "logo_url3", "url", "group_name", "name#ja");
foreach my $column (@columns) {
if (my $v = $self->param($column)) {
$params{$column} = $v;
}
}
my $client = $self->client;
if (! $client->add_sponsor(\%params)) {
# XXX handle this properly
die $client->last_error();
}

$self->redirect_to($self->url_for("/conference/lookup")->query(id => $self->stash("conference")->{id}));
}

sub sponsor_remove {
my $self = shift;
if (!$self->_lookup()) {
return
}

my %params = (
conference_id => $self->stash("conference")->{id},
id => $self->param("id"),
user_id => $self->stash('ui_user')->{id},
);
my $client = $self->client;
if (! $client->delete_sponsor(\%params)) {
# XXX handle this properly
die $client->last_error();
}

$self->redirect_to($self->url_for("/conference/lookup")->query(id => $self->stash("conference")->{id}));
}

1;
86 changes: 55 additions & 31 deletions templates/conference/edit.html.tx
Expand Up @@ -66,13 +66,34 @@
</div>
</div>

<h5>Administrators <!--a id="add-admin-btn" class="btn-floating btn-small red"><i class="large material-icons">add_circle</i></a--></h5>

<div class="row">
<div class="collection col s12">
<div class="col s12">
<h5>Administrators <a id="add-administrator-btn" class="btn-floating btn-small red"><i class="large material-icons">add_circle</i></a></h5>
<div id="administrator_form" class="row">
<div class="collection col s12">
<form action="/conference/administrator/add" method="POST" class="col s12">
<input type="hidden" name="id" value="[% conference.id %]">
<div class="row">
<div class="input-field col s6">
<input type="text" name="admin_id" placeholder="UUID of the user" id="admin_id">
<label for="admin_id">User ID</label>
</div>
</div>
<div class="row">
<div class="col s3">
<button class="btn waves-effect waves-light" type="submit" name="action">Submit <i class="material-icons right">send</i></button>
</div>
</div>
</form>
</div>
</div>
<div class="row">
<ul class="collection col s12">
[% FOREACH user IN conference.administrators %]
<a class="collection-item" href="/user/lookup?id=[% user.id %]">[% user.nickname %]</a>
<li class="collection-item"><a href="/user/lookup?id=[% user.id %]">[% user.nickname %]</a> [<a href="#" data-id="[% user.id %]" class="remove-administrator">x</a>]</li>
[% END %]
</ul>
</div>
</div>
</div>

Expand Down Expand Up @@ -187,42 +208,43 @@
</form>
</div>
</div>
</div>
<ul class="collection col s12">
<ul class="collection col s12">
[% FOREACH sponsor IN conference.sponsors %]
<li class="collection-item"><a href="/sponsor/lookup?id=[% sponsor.id %]">[% sponsor.name %]</a> [<a href="#" data-id="[% sponsor.id %]" class="remove-sponsor">x</a>]</li>
<li class="collection-item"><a href="/sponsor/lookup?id=[% sponsor.id %]">[% sponsor.name %]</a> [<a href="#" data-id="[% sponsor.id %]" class="remove-sponsor">x</a>]</li>
[% END %]
</ul>
</ul>
</div>
</div>

<h5>Venues <a id="add-venue-btn" class="btn-floating btn-small red"><i class="large material-icons">add_circle</i></a></h5>

<div id="venueform" class="row">
<form action="/conference/venue/add" method="POST" class="col s12">
<input type="hidden" name="id" value="[% conference.id %]">
<div class="input-field col s6">
<select id="venue_id" name="venue_id">
<option value="" disabled selected>Choose Venue</option>
<div class="row">
<div class="col s12">
<h5>Venues <a id="add-venue-btn" class="btn-floating btn-small red"><i class="large material-icons">add_circle</i></a></h5>
<div id="venueform" class="row">
<form action="/conference/venue/add" method="POST" class="col s12">
<input type="hidden" name="id" value="[% conference.id %]">
<div class="input-field col s6">
<select id="venue_id" name="venue_id">
<option value="" disabled selected>Choose Venue</option>
[%- FOREACH venue IN venues %]
<option value="[% venue.id %]">[% venue.name %] [% venue.address %]</option>
<option value="[% venue.id %]">[% venue.name %] [% venue.address %]</option>
[% END -%]
</select>
<label for="venue_id">Venue</label>
</div>
<div class="col s3">
<button class="btn waves-effect waves-light" type="submit" name="action">Submit <i class="material-icons right">send</i></button>
</div>
</form>
</div>
</select>
<label for="venue_id">Venue</label>
</div>
<div class="col s3">
<button class="btn waves-effect waves-light" type="submit" name="action">Submit <i class="material-icons right">send</i></button>
</div>
</form>
</div>

<div class="row">
<ul class="collection col s12">
<div class="row">
<ul class="collection col s12">
[% FOREACH venue IN conference.venues %]
<li class="collection-item"><a href="/venue/lookup?id=[% venue.id %]">[% venue.name %]</a> [<a href="#" data-id="[% venue.id %]" class="remove-venue">x</a>]</li>
<li class="collection-item"><a href="/venue/lookup?id=[% venue.id %]">[% venue.name %]</a> [<a href="#" data-id="[% venue.id %]" class="remove-venue">x</a>]</li>
[% END %]
</ul>
</div>

</ul>
</div>
</div>
</div><!-- outer row -->

<script type="text/javascript">
Expand Down Expand Up @@ -258,6 +280,8 @@
});
});
});
$("#administrator_form").hide();
$("#add-administrator-btn").click(function() { $("#administrator_form").show("slide") });
$("#featured_speaker_form").hide();
$("#add-featured_speaker-btn").click(function() { $("#featured_speaker_form").show("slide") });
$("#sponsor_form").hide();
Expand Down

0 comments on commit d7068b8

Please sign in to comment.