mirror of
https://github.com/a2nt/cms-niceties.git
synced 2024-10-22 11:05:46 +02:00
IMPR: AJAX processing
This commit is contained in:
parent
70f42541f2
commit
a81011feb2
@ -15,7 +15,7 @@ SilverStripe\SiteConfig\SiteConfig:
|
|||||||
PageController:
|
PageController:
|
||||||
extensions:
|
extensions:
|
||||||
- A2nt\CMSNiceties\Extensions\PageControllerEx
|
- A2nt\CMSNiceties\Extensions\PageControllerEx
|
||||||
- A2nt\CMSNiceties\Ajax\Ex\AjaxLoginFormControllerEx
|
- A2nt\CMSNiceties\Ajax\Ex\AjaxControllerEx
|
||||||
|
|
||||||
SilverStripe\CMS\Model\SiteTree:
|
SilverStripe\CMS\Model\SiteTree:
|
||||||
default_container_class: 'container'
|
default_container_class: 'container'
|
||||||
|
@ -2,18 +2,21 @@
|
|||||||
|
|
||||||
namespace A2nt\CMSNiceties\Ajax\Ex;
|
namespace A2nt\CMSNiceties\Ajax\Ex;
|
||||||
|
|
||||||
|
use SilverStripe\Control\Controller;
|
||||||
use SilverStripe\Control\Director;
|
use SilverStripe\Control\Director;
|
||||||
|
use SilverStripe\Control\HTTPRequest;
|
||||||
use SilverStripe\Core\Extension;
|
use SilverStripe\Core\Extension;
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\Security\MemberAuthenticator\MemberAuthenticator;
|
use SilverStripe\Security\MemberAuthenticator\MemberAuthenticator;
|
||||||
use SilverStripe\Security\Security;
|
use SilverStripe\Security\Security;
|
||||||
|
use SilverStripe\View\SSViewer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class \App\Service\Ex\ServiceAreaController
|
* Class \App\Service\Ex\ServiceAreaController
|
||||||
*
|
*
|
||||||
* @property \A2nt\CMSNiceties\Ajax\Ex\AjaxLoginFormControllerEx $owner
|
* @property \A2nt\CMSNiceties\Ajax\Ex\AjaxLoginFormControllerEx $owner
|
||||||
*/
|
*/
|
||||||
class AjaxLoginFormControllerEx extends Extension
|
class AjaxControllerEx extends Extension
|
||||||
{
|
{
|
||||||
private static $allowed_actions = [
|
private static $allowed_actions = [
|
||||||
'LoginFormEx',
|
'LoginFormEx',
|
||||||
@ -59,11 +62,20 @@ class AjaxLoginFormControllerEx extends Extension
|
|||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function isFormRequest()
|
||||||
|
{
|
||||||
|
$ctrl = Controller::curr();
|
||||||
|
/* @var $req SilverStripe\Control\HTTPRequest */
|
||||||
|
$req = $ctrl->getRequest();
|
||||||
|
|
||||||
|
return $req->getHeader('x-requested-form') || $req->requestVar('formid');
|
||||||
|
}
|
||||||
|
|
||||||
public function passwordsent()
|
public function passwordsent()
|
||||||
{
|
{
|
||||||
$ctrl = $this->owner;
|
$ctrl = $this->owner;
|
||||||
|
|
||||||
if (Director::is_ajax()) {
|
if (self::isFormRequest() && Director::is_ajax()) {
|
||||||
$message = _t(
|
$message = _t(
|
||||||
'SilverStripe\\Security\\Security.PASSWORDRESETSENTTEXT',
|
'SilverStripe\\Security\\Security.PASSWORDRESETSENTTEXT',
|
||||||
"Thank you. A reset link has been sent, provided an account exists for this email address."
|
"Thank you. A reset link has been sent, provided an account exists for this email address."
|
||||||
@ -75,13 +87,63 @@ class AjaxLoginFormControllerEx extends Extension
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
return $json;
|
return $json;
|
||||||
/*$response = $ctrl->getResponse();
|
|
||||||
$response->setBody($json);
|
|
||||||
die($response->output());*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Injector::inst()->get(MemberAuthenticator::class)
|
return Injector::inst()->get(MemberAuthenticator::class)
|
||||||
->getLostPasswordHandler($ctrl->Link())
|
->getLostPasswordHandler($ctrl->Link())
|
||||||
->passwordsent();
|
->passwordsent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function processAJAX($tpls)
|
||||||
|
{
|
||||||
|
foreach ($tpls as $tpl) {
|
||||||
|
if (is_array($tpl)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$a_tpl = explode('\\', $tpl);
|
||||||
|
$last_name = array_pop($a_tpl);
|
||||||
|
$a_tpl[] = 'Layout';
|
||||||
|
$a_tpl[] = $last_name;
|
||||||
|
$a_tpl = implode('\\', $a_tpl);
|
||||||
|
|
||||||
|
if (SSViewer::hasTemplate($a_tpl)) {
|
||||||
|
$tpl = $a_tpl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
|
||||||
|
$tpl = is_array($tpl) ? 'Page' : $tpl;
|
||||||
|
$tpl = ($tpl !== 'Page') ? $tpl : 'Layout/Page';
|
||||||
|
|
||||||
|
return SSViewer::create($tpl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function prepareAjaxResponse($response)
|
||||||
|
{
|
||||||
|
$ctrl = $this->owner;
|
||||||
|
|
||||||
|
$record = $ctrl->dataRecord;
|
||||||
|
|
||||||
|
$req = $ctrl->getRequest();
|
||||||
|
$url = $req->getURL();
|
||||||
|
$url = $url === 'home' ? '/' : $url;
|
||||||
|
|
||||||
|
$resources = array_merge(
|
||||||
|
$ctrl->config()->get('graphql_resources'),
|
||||||
|
$ctrl->config()->get('ajax_resources')
|
||||||
|
);
|
||||||
|
|
||||||
|
$response->setBody(json_encode([
|
||||||
|
'ID' => $record->ID,
|
||||||
|
'Title' => $record->Title,
|
||||||
|
'Link' => $ctrl->Link(),
|
||||||
|
'CSSClass' => $ctrl->CSSClass(),
|
||||||
|
'Resources' => $resources,
|
||||||
|
'RequestLink' => $url,
|
||||||
|
'MainContent' => $response->getBody(),
|
||||||
|
]));
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user