=== FundMySite ===
Contributors: ashpaz
Tags: donations, fundraising, campaigns, paypal, charity
Requires at least: 5.8
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Run fundraising campaigns with goals, live progress bars, PayPal and offline donations, email receipts, a supporters wall, reports, and one-click backup and import.

== Description ==

FundMySite turns your WordPress site into a fundraising hub. Launch campaigns with goals, deadlines and live progress bars, accept donations through PayPal or offline payments, send donors email receipts, show off your supporters, and manage donations, donors, reports, imports, exports and backups from one dashboard.

* Campaigns (custom post type) with goal, currency, end date, period label, starting raised amount, suggested/default/minimum amounts, custom-amount toggle, thank-you message, open/closed switch and a per-campaign supporters-list setting.
* Campaign URLs: /campaigns/<name>/ and /campaigns/<name>/donate/ (base is configurable).
* Donation form: suggested amounts, custom amount (whole numbers, configurable minimum), name, email (optional or required), optional phone and message, "Don't show my name" privacy checkbox, payment-method chooser, honeypot spam trap.
* Gateways: PayPal Standard or Donation checkout (no API keys, verified IPN, optional PDT backup confirmation, activity log, sandbox mode, refund handling), Offline / bank transfer (stays pending until you mark it completed), and external support buttons (Buy Me a Coffee, Ko-fi, PayPal.Me).
* Donations admin: filterable and sortable list, status views, search, bulk actions, manual entries, CSV export, and a Trash with restore.
* Donors screen, dashboard with totals, last-12-months chart, top campaigns and recent donations, and a WordPress dashboard widget.
* Emails: donor receipt and admin notification with merge tags.
* Supporters list: only donors who allow their name to be shown appear.
* Privacy: WordPress personal-data export and erase support.
* Settings > Export / Import: one JSON backup of settings, campaigns, donations and donors, and a safe, repeatable import.
* Import donations from CSV files; one-click migration from "Simple Fundraiser".
* Appearance: 34 theme presets and 37 colour palettes (filterable by category), 11 status-box styles, a live preview and custom CSS.

== Shortcodes ==

`[fundmysite_campaigns number="6" columns="3" orderby="date|raised|goal|title|end" status="active|all|ended"]`
`[fundmysite_campaign id="12" form="1" donors="1" title="1" description="1"]`
`[fundmysite_donation_form campaign_id="12"]`
`[fundmysite_progress id="12" donate="1" support="1"]` (donate adds the Donate button, support adds your extra support buttons)
`[fundmysite_donors campaign_id="12" number="20" show_amount="1" show_date="1"]`
`[fundmysite_stats campaign_id="12" type="raised|goal|donors|donations|percent|remaining"]`
`[fundmysite_thankyou]` (receipt page)
`[fundmysite_my_donations]`

Old `[fundurl_*]` shortcodes still work. `[simple_fundraiser]` and `[simple_fundraiser_thankyou]` work when the old plugin is not active.

== Installation ==

1. Back up your site. Deactivate any other fundraising plugin that uses the /campaigns/ URL base.
2. Upgrading from FundURL: deactivate FundURL first, then activate FundMySite. Your campaigns, donations, settings and widgets are moved over automatically. You can then delete FundURL.
3. Plugins > Add New > Upload Plugin > fundmysite-v1_0.zip > Activate.
4. FundMySite > Settings > Payment Gateways: enter your PayPal email. Check the donation pages, then make a small test payment.
5. If /campaigns/ URLs show a 404, visit Settings > Permalinks and press Save once.

== Notes ==

* A donation is marked completed only when PayPal's verified IPN confirms receiver email, amount and currency. A browser return alone never completes a payment.
* Buy Me a Coffee and Ko-fi payments cannot be confirmed automatically; record them under Donations > Add Donation.
* Imported donor names are hidden from the public list unless you tick the option during import.
* Deleting the plugin keeps your data unless "Delete ALL FundMySite data" is enabled in Settings > Advanced.

== Changelog ==

= 1.2 =
* Rebuilt Settings > Appearance: sectioned panels (Theme presets, Colours, Status boxes, Text & CSS) beside the live preview, with category filters, 34 one-click theme presets and 37 colour palettes.
* New: campaign pages open in Full view (no sidebar, full-width content) by default. Choose Full view or Default view in Settings > General, or per campaign in its editor.
* New: the Donations list marks donors who ticked "Don't show my name in the supporters list" with a "Name hidden" badge.
* Fixed: the Empty Trash button on the Donations list did nothing. It now permanently deletes everything in the donations Trash (after a confirmation).
* Removed: the separate FundMySite > Trash page. Trash stays available inside Campaigns, Donations and Donors.

= 1.1 =
* Redesigned Settings > Appearance: 16 one-click theme presets, 14 colour palettes, 11 status-box styles (new: gradient, frosted, underline, dashed and floating card) and a live preview that updates as you edit.
* PayPal: a payment is now recognised when PayPal reports your account's primary email OR the email used on the donation form (previously a PayPal alias address made every payment get ignored, leaving the donation Pending and out of the Donors list).
* PayPal: if the amount PayPal reports differs from the donation, the amount actually paid is recorded instead of ignoring the payment.
* PayPal: optional PDT identity token confirms the donation the moment the donor returns to your site, even when the IPN message is slow or blocked.
* PayPal: new activity log under Settings > Payment Gateways shows every PayPal message and why a donation is still pending; duplicate messages for one payment are processed once.
* New: PayPal transaction type, Standard or Donation.
* New: Trash for donations and donors (restore or delete permanently), and the WordPress Trash for campaigns. Deleting moves items to the Trash first.
* New: Settings > Export / Import: one JSON backup of settings, campaigns, donations and donors, with a safe, repeatable import.
* New: Settings > Advanced > Reset to fresh install (type RESET to confirm).
* New: Dashboard campaign dropdown (All campaigns or one campaign) with a Campaign status panel.
* New: Embed Codes tab with a campaign dropdown and every available shortcode and variant, plus plain links. [fundmysite_progress] and [fundmysite_campaign] accept donate="1" and support="1".
* New: widget option to show or hide the progress bar.
* New: visible inline warnings for an empty name (and email) on every device, including phones.
* Changed: supporters list title is now "Our Supporters"; equal, tighter space above the campaign title and the "Choose your contribution" heading.
* Fixed: the campaign /donate/ page showed two Donate buttons.

= 1.0 =
* New name: FundMySite (previously FundURL 1.1.24). Existing FundURL data is imported automatically on activation.
* Fixed: choosing a suggested amount after typing a custom amount could still submit the custom amount, or block the form with a stale validation message.
* Fixed: the dashboard's 12-month chart could skip or repeat a month on the 29th to 31st.
* Fixed: deleting the plugin left the migration record behind.
* Fixed: changing the campaign URL base now flushes rewrite rules reliably on the next request.
* Fixed: CSV import and export no longer trigger PHP 8.4 deprecation notices that could corrupt the exported file.
* Fixed: the Simple Fundraiser migration tolerates older table layouts.
* Fixed: campaign widget follows the chosen status-box style and applies the theme's widget-title filter.
* New: "Minimum custom amount" setting (default 4) replaces a hard-coded value.
* Redesigned front end: cleaner cards, amount chips, form fields and progress bar in one consolidated stylesheet.
