Browse Source

Add default currency and amount settings to campaign dashboard

develop
Sven Slootweg 8 years ago
parent
commit
68ebe0722d
  1. 6
      public_html/classes/campaign.php
  2. 55
      public_html/modules/campaign/changesettings.php
  3. 3
      public_html/modules/campaign/dashboard.php
  4. 5
      public_html/rewrite.php
  5. 39
      public_html/templates/campaign/dashboard.tpl
  6. 2
      sql_updates/2013-06-12-defaults.sql

6
public_html/classes/campaign.php

@ -22,7 +22,8 @@ class Campaign extends CPHPDatabaseRecordClass
public $prototype = array(
'string' => array(
'Name' => "Name",
'UrlName' => "UrlName"
'UrlName' => "UrlName",
'DefaultCurrency' => "DefaultCurrency"
),
'numeric' => array(
'OwnerId' => "OwnerId",
@ -35,7 +36,8 @@ class Campaign extends CPHPDatabaseRecordClass
'PastMonthAmount' => "PastMonthAmount",
'PastMonthNonAmount' => "PastMonthNonAmount",
'PastMonthSubscriptions' => "PastMonthSubscriptions",
'PastMonthUnsubscriptions' => "PastMonthUnsubscriptions"
'PastMonthUnsubscriptions' => "PastMonthUnsubscriptions",
'DefaultAmount' => "DefaultAmount"
),
'boolean' => array(
'AllowOneTime' => "AllowOneTime",

55
public_html/modules/campaign/changesettings.php

@ -0,0 +1,55 @@
<?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.");
}
if($sCampaign->VerifyAdministratorAccess($_SESSION['user_id']) === false)
{
throw new RouterException("Not authorized to administrate this campaign.");
}
if(!empty($_POST['default_currency']) && in_array($_POST['default_currency'], array("usd", "eur", "btc"))) /* TODO: Allow other currencies */
{
$sCampaign->uDefaultCurrency = $_POST['default_currency'];
}
if(isset($_POST['default_amount']))
{
if(preg_match("/^([0-9]*[.,][0-9]+|[0-9]+)$/", $_POST['default_amount']) == false)
{
flash_error("You did not enter a valid default amount.");
}
else
{
$sCampaign->uDefaultAmount = $_POST['default_amount'];
}
}
if(count(get_errors(false)) == 0)
{
$sCampaign->InsertIntoDatabase();
flash_notice("Settings successfully changed.");
}
redirect("/dashboard/{$sCampaign->sUrlName}");

3
public_html/modules/campaign/dashboard.php

@ -82,5 +82,8 @@ $sPageContents = NewTemplater::Render("campaign/dashboard", $locale->strings, ar
"nondonations-amount" => $sCampaign->sPastMonthNonDonations,
"nondonations-percentage" => $sNonDonationPercentage,
"statistics-available" => $sStatisticsAvailable
), array(
"default_currency" => $sCampaign->sDefaultCurrency,
"default_amount" => $sCampaign->sDefaultAmount
));

5
public_html/rewrite.php

@ -58,6 +58,11 @@ $router->routes = array(
'authenticator' => "authenticators/user.php",
'auth_error' => "modules/error/guest.php"
),
"^/dashboard/([a-zA-Z0-9-]+)/change-settings$" => array(
'target' => "modules/campaign/changesettings.php",
'authenticator' => "authenticators/user.php",
'auth_error' => "modules/error/guest.php"
),
"^/pay/(.+)/([0-9]+)/([a-zA-Z0-9]+)/(.+)/done$" => array(
'target' => "modules/payment/notify_done.php",
'authenticator' => "authenticators/payment.php",

39
public_html/templates/campaign/dashboard.tpl

@ -8,6 +8,18 @@
{%/foreach}
{%/if}
{%if isempty|errors == false}
<div class="errors">
One or more problems occurred:
<ul>
{%foreach error in errors}
<li>{%?error}</li>
{%/foreach}
</ul>
Please correct these issues and submit the form again.
</div>
{%/if}
<div class="dashboard-section">
<h3 class="spaced">Your public campaign page URL</h3>
<input class="permalink" type="text" value="http://redonate.net/campaign/{%?urlname}">
@ -85,3 +97,30 @@
<p>No payment methods have been added yet.</p>
{%/if}
</div>
<div class="dashboard-section">
<h3>Settings</h3>
<form method="post" action="/dashboard/{%?urlname}/change-settings">
<div class="formfield">
<label>Default currency</label>
{%select name="default_currency"}
{%option value="usd" text="$ (United States Dollar)"}
{%option value="eur" text="€ (Euro)"}
{%option value="btc" text="BTC (Bitcoin)"}
{%/select}
<div class="clear"></div>
</div>
<div class="formfield">
<label>Default amount</label>
{%input name="default_amount"}
<div class="clear"></div>
</div>
<div class="formfield">
<label></label>
<button type="submit" class="small">Save settings</button>
</div>
</form>
</div>

2
sql_updates/2013-06-12-defaults.sql

@ -0,0 +1,2 @@
ALTER TABLE `campaigns` ADD `DefaultCurrency` VARCHAR( 6 ) NOT NULL DEFAULT 'usd',
ADD `DefaultAmount` DECIMAL( 12, 2 ) NOT NULL DEFAULT '5';
Loading…
Cancel
Save