First bits of a dashboard for a campaign

master
Sven Slootweg 11 years ago
parent 49734c85d7
commit c0f6c09d1f

@ -0,0 +1,46 @@
<?php
/*
* ReDonate is more free software. It is licensed under the WTFPL, which
* allows you to do pretty much anything with it, without having to
* ask permission. Commercial use is allowed, and no attribution is
* required. We do politely request that you share your modifications
* to benefit other developers, but you are under no enforced
* obligation to do so :)
*
* Please read the accompanying LICENSE document for the full WTFPL
* licensing text.
*/
if(!isset($_APP)) { die("Unauthorized."); }
try
{
$sCampaign = Campaign::CreateFromQuery("SELECT * FROM campaigns WHERE `UrlName` = :UrlName", array(":UrlName" => $router->uParameters[1]), 30, true);
}
catch (NotFoundException $e)
{
throw new RouterException("Campaign does not exist.");
}
$sPaymentMethods = array();
try
{
foreach(PaymentMethod::CreateFromQuery("SELECT * FROM payment_methods WHERE `CampaignId` = :CampaignId",
array(":CampaignId" => $sCampaign->sId)) as $sPaymentMethod)
{
$sPaymentMethods[] = $sPaymentMethod->GetLogo();
}
}
catch (NotFoundException $e)
{
/* No payment methods...? */
}
$sPageTitle = "Dashboard for {$sCampaign->sName}";
$sPageContents = NewTemplater::Render("campaign/dashboard", $locale->strings, array(
"name" => $sCampaign->sName,
"payment-methods" => $sPaymentMethods
));

@ -37,6 +37,11 @@ $router->routes = array(
'authenticator' => "authenticators/user.php",
'auth_error' => "modules/error/guest.php"
),
"^/dashboard/([a-zA-Z0-9-]+)$" => array(
'target' => "modules/campaign/dashboard.php",
'authenticator' => "authenticators/user.php",
'auth_error' => "modules/error/guest.php"
),
"^/campaign/([a-zA-Z0-9-]+)$" => "modules/landing.php",
"^/campaign/([a-zA-Z0-9-]+)/subscribe$" => "modules/subscribe.php"
)

@ -93,6 +93,12 @@ pre.debug
margin-bottom: 24px;
}
.main h3
{
font-size: 26px;
margin-bottom: 12px;
}
/**************************************
* FOOTER *
**************************************/
@ -396,24 +402,39 @@ td.meta
* LOGOS *
**************************************/
.logo
{
margin-right: 17px;
}
.logo.thumb
{
margin-right: 11px;
}
img.logo
{
vertical-align: bottom;
}
img.logo.thumb
{
vertical-align: middle;
height: 20px;
}
div.logo.thumb
div.logo
{
font-size: 18px;
font-weight: bold;
font-style: italic;
color: #1F2E0B;
display: inline-block;
font-size: 39px;
}
div.logo.thumb
{
font-size: 18px;
}
/**************************************
@ -425,6 +446,77 @@ td.payment-methods
max-width: 240px;
}
.dashboard-section
{
margin-top: 18px;
}
/**************************************
* BAR GRAPH *
**************************************/
.bar-graph
{
margin-top: 12px;
float: left;
height: 80px;
width: 580px;
border: 1px solid silver;
}
.bar-graph .area
{
float: left;
height: 80px;
}
.bar-graph .area.unsubscribed, .graph-legend .item .box.unsubscribed
{
background-color: #676767;
}
.bar-graph .area.not-donated, .graph-legend .item .box.not-donated
{
background-color: #9C9C9C;
}
.bar-graph .area.donated, .graph-legend .item .box.donated
{
background-color: #85E142;
}
.bar-graph .area.subscribed, .graph-legend .item .box.subscribed
{
background-color: #19D00D;
}
.graph-legend
{
float: left;
margin-top: 10px;
margin-left: 24px;
}
.graph-legend .item
{
margin-top: 2px;
}
.graph-legend .item .box
{
float: left;
width: 16px;
height: 16px;
border: 1px solid gray;
}
.graph-legend .item .description
{
float: left;
font-weight: bold;
margin-left: 8px;
}
/**************************************
* LANDING *
**************************************/

@ -0,0 +1,49 @@
<h2 class="spaced">Dashboard &gt; {%?name}</h2>
<div class="dashboard-section">
<h3>Past month</h3>
<div class="bar-graph">
<div class="area unsubscribed" style="width: 12%;"></div>
<div class="area not-donated" style="width: 16%;"></div>
<div class="area donated" style="width: 49%;"></div>
<div class="area subscribed" style="width: 23%;"></div>
</div>
<div class="graph-legend">
<div class="item">
<div class="box subscribed"></div>
<div class="description">23 new subscriptions</div>
<div class="clear"></div>
</div>
<div class="item">
<div class="box donated"></div>
<div class="description">49 donations</div>
<div class="clear"></div>
</div>
<div class="item">
<div class="box not-donated"></div>
<div class="description">16 non-donations</div>
<div class="clear"></div>
</div>
<div class="item">
<div class="box unsubscribed"></div>
<div class="description">12 unsubscriptions</div>
<div class="clear"></div>
</div>
</div>
<div class="clear"></div>
</div>
<div class="dashboard-section">
<h3>Payment methods</h3>
{%foreach method in payment-methods}
{%if isempty|method[image] == false}
<img class="logo" src="{%?method[image]}" alt="{%?method[text]}">
{%else}
<div class="logo">{%?method[text]}</div>
{%/if}
{%/foreach}
</div>
Loading…
Cancel
Save