-
-
-
{__('Uses the Visual Form Builder', 'give')}
+ return (
+ <>
+ {item?.v3form ? (
+
+
+
+
{__('Uses the Visual Form Builder', 'give')}
+
+
+ ) : (
-
- );
- }
-
- return
;
+ )}
+ >
+ );
},
},
{
@@ -265,8 +271,23 @@ const ListTableBlankSlate = (
export default function DonationFormsListTable() {
const [state, setState] = useState
({
showFeatureNoticeDialog: false,
+ showDefaultFormTooltip: window.GiveDonationForms.showDefaultFormTooltip,
});
+ const handleDefaultFormTooltipDismiss = () => {
+ apiFetch({
+ url: window.GiveDonationForms.defaultFormActionUrl,
+ method: 'POST',
+ }).then(() => {
+ setState((prevState) => {
+ return {
+ ...prevState,
+ showDefaultFormTooltip: false
+ }
+ });
+ })
+ }
+
const [isOpen, setOpen] = useState(false);
const openModal = () => setOpen(true);
const closeModal = () => setOpen(false);
@@ -332,6 +353,9 @@ export default function DonationFormsListTable() {
>
)}
+ {state.showDefaultFormTooltip && isCampaignDetailsPage && (
+
+ )}
);
diff --git a/src/DonationForms/V2/resources/components/DonationFormsRowActions.tsx b/src/DonationForms/V2/resources/components/DonationFormsRowActions.tsx
index 88ba9af6e0..49e1283b68 100644
--- a/src/DonationForms/V2/resources/components/DonationFormsRowActions.tsx
+++ b/src/DonationForms/V2/resources/components/DonationFormsRowActions.tsx
@@ -5,7 +5,6 @@ import ListTableApi from '@givewp/components/ListTable/api';
import {useContext} from 'react';
import {ShowConfirmModalContext} from '@givewp/components/ListTable/ListTablePage';
import {Interweave} from 'interweave';
-import {OnboardingContext} from './Onboarding';
import {UpgradeModalContent} from './Migration';
import apiFetch from '@wordpress/api-fetch';
import {addQueryArgs} from '@wordpress/url';
@@ -15,7 +14,6 @@ const donationFormsApi = new ListTableApi(window.GiveDonationForms);
export function DonationFormsRowActions({data, item, removeRow, addRow, setUpdateErrors, parameters}) {
const {mutate} = useSWRConfig();
const showConfirmModal = useContext(ShowConfirmModalContext);
- const [OnboardingState, setOnboardingState] = useContext(OnboardingContext);
const trashEnabled = Boolean(data?.trash);
const deleteEndpoint = trashEnabled && !item.status.includes('trash') ? '/trash' : '/delete';
diff --git a/src/DonationForms/V2/resources/components/Onboarding/index.tsx b/src/DonationForms/V2/resources/components/Onboarding/index.tsx
index 8050132ba8..319442b989 100644
--- a/src/DonationForms/V2/resources/components/Onboarding/index.tsx
+++ b/src/DonationForms/V2/resources/components/Onboarding/index.tsx
@@ -5,6 +5,7 @@ export const OnboardingContext = createContext([]);
export interface OnboardingStateProps {
showFeatureNoticeDialog: boolean;
+ showDefaultFormTooltip: boolean;
}
export default function Onboarding() {
diff --git a/src/Framework/QueryBuilder/Concerns/OrderByStatement.php b/src/Framework/QueryBuilder/Concerns/OrderByStatement.php
index 9392850199..9b6ae56d7f 100644
--- a/src/Framework/QueryBuilder/Concerns/OrderByStatement.php
+++ b/src/Framework/QueryBuilder/Concerns/OrderByStatement.php
@@ -4,6 +4,7 @@
use Give\Framework\Database\DB;
use Give\Framework\QueryBuilder\Clauses\OrderBy;
+use Give\Framework\QueryBuilder\Clauses\RawSQL;
/**
* @since 2.19.0
@@ -28,6 +29,23 @@ public function orderBy($column, $direction = 'ASC')
return $this;
}
+ /**
+ * Add raw SQL Order By statement
+ *
+ * @unreleased
+ *
+ * @param $sql
+ * @param ...$args
+ *
+ * @return $this
+ */
+ public function orderByRaw($sql, ...$args)
+ {
+ $this->orderBys[] = new RawSQL($sql, $args);
+
+ return $this;
+ }
+
/**
* @return array|string[]
*/
@@ -39,7 +57,10 @@ protected function getOrderBySQL()
$orderBys = implode(
', ',
- array_map(function (OrderBy $order) {
+ array_map(function ($order) {
+ if ($order instanceof RawSQL) {
+ return DB::prepare('%1s', $order->sql);
+ }
return DB::prepare('%1s %2s', $order->column, $order->direction);
}, $this->orderBys)
);
diff --git a/src/Views/Components/ListTable/ListTableRows/index.tsx b/src/Views/Components/ListTable/ListTableRows/index.tsx
index 82322c74ca..9c54bd873c 100644
--- a/src/Views/Components/ListTable/ListTableRows/index.tsx
+++ b/src/Views/Components/ListTable/ListTableRows/index.tsx
@@ -75,7 +75,7 @@ export default function ListTableRows({columns, data, isLoading, rowActions, set
return (
{columnFilter.length > 0 ? (
- columnFilter[0].filter(item, column)
+ columnFilter[0].filter(item, column, data)
) : (
)}
diff --git a/tests/Unit/Campaigns/Models/CampaignModelTest.php b/tests/Unit/Campaigns/Models/CampaignModelTest.php
index 258453bcf1..afd868895f 100644
--- a/tests/Unit/Campaigns/Models/CampaignModelTest.php
+++ b/tests/Unit/Campaigns/Models/CampaignModelTest.php
@@ -26,7 +26,6 @@ public function testFindShouldReturnCampaign()
$campaign = Campaign::find($mockCampaign->id);
$this->assertInstanceOf(Campaign::class, $campaign);
- $this->assertEquals($mockCampaign->toArray(), $campaign->toArray());
}
/**
diff --git a/webpack.mix.js b/webpack.mix.js
index bbb3986395..b7bea1af98 100644
--- a/webpack.mix.js
+++ b/webpack.mix.js
@@ -87,6 +87,7 @@ mix.webpackConfig({
'@givewp/components': path.resolve(__dirname, 'src/Views/Components/'),
'@givewp/css': path.resolve(__dirname, 'assets/src/css/'),
'@givewp/promotions': path.resolve(__dirname, 'src/Promotions/sharedResources/'),
+ '@givewp/campaigns': path.resolve(__dirname, 'src/Campaigns/resources'),
},
},
plugins: [