From 8a4b58652b9eaa1c3d3d9a3e1dbc3f79a295a4e8 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 18 Sep 2020 14:32:15 -0400 Subject: [PATCH] Update ProcessPageEdit and ProcessPageList to implement the getAfterLoginUrl() method --- .../ProcessPageEdit/ProcessPageEdit.module | 36 +++++++++++++++++++ .../ProcessPageList/ProcessPageList.module | 28 +++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module b/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module index 2cc360b5..d138cd2b 100644 --- a/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module +++ b/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module @@ -3072,6 +3072,42 @@ class ProcessPageEdit extends Process implements WirePageEditor, ConfigurableMod } } + /** + * URL to redirect to after non-authenticated user is logged-in, or false if module does not support + * + * @param Page $page + * @return bool|string + * @sine 3.0.167 + * + */ + public static function getAfterLoginUrl(Page $page) { + $sanitizer = $page->wire()->sanitizer; + $input = $page->wire()->input; + if($input->urlSegmentStr === 'bookmarks') return $page->url . 'bookmarks/'; + $qs = array( + 'id' => (int) $input->get('id'), + 'language' => (int) $input->get('language'), + 'template' => (int) $input->get('template'), // used by executeTemplate() only + 'uploadOnlyMode' => (int) $input->get('uploadOnlyMode'), + 'fnsx' => $input->get->fieldName('fnsx'), + 'context' => $input->get->name('context'), + 'field' => $input->get->fieldName('field'), + 'fields' => array(), + ); + if($input->urlSegmentStr === 'template') { + return "$page->url?id=$qs[id]&template=$qs[template]"; + } + if($input->get('fields')) { + foreach(explode(',', $input->get('fields')) as $value) { + $qs['fields'] .= ($qs['fields'] ? ',' : '') . $sanitizer->fieldName($value); + } + } + $a = array(); + foreach($qs as $name => $value) { + if(!empty($value)) $a[] = "$name=$value"; + } + return "$page->url?" . implode('&', $a); + } /** * Module config diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.module b/wire/modules/Process/ProcessPageList/ProcessPageList.module index 67b79e97..4c85b2b7 100644 --- a/wire/modules/Process/ProcessPageList/ProcessPageList.module +++ b/wire/modules/Process/ProcessPageList/ProcessPageList.module @@ -645,6 +645,34 @@ class ProcessPageList extends Process implements ConfigurableModule { $bookmarks = $this->getPageBookmarks(); return $bookmarks->editBookmarks(); } + + /** + * URL to redirect to after non-authenticated user is logged-in, or false if module does not support + * + * @param Page $page + * @return bool|string + * @sine 3.0.167 + * + */ + public static function getAfterLoginUrl(Page $page) { + $url = $page->url(); + $input = $page->wire()->input; + list($s1, $s2) = array($input->urlSegment1, $input->urlSegment2); + if(ctype_digit($s2) && ($s1 === 'id' || $s1 === 'open')) { + return $url . "$s1/" . (int) $s2; // i.e. /id/123 or /open/456 + } else { + $intVars = array('limit', 'start', 'lang', 'open', 'id', 'n'); + $data = array(); + foreach($intVars as $name) { + $value = (int) $input->get($name); + if($value > 0) $data[$name] = $value; + } + $render = $input->get->name('render'); + if($render) $data['render'] = strtoupper($render); + if(count($data)) $url .= "?" . implode('&', $data); + } + return $url; + } /** * Build a form allowing configuration of this Module