From d12bd962d0cacbaad479be04cc953c607212756f Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Wed, 31 Oct 2012 16:33:22 +0100 Subject: added test for isHiddenPage() --- _test/tests/inc/pageutils_isHiddenPage.test.php | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 _test/tests/inc/pageutils_isHiddenPage.test.php diff --git a/_test/tests/inc/pageutils_isHiddenPage.test.php b/_test/tests/inc/pageutils_isHiddenPage.test.php new file mode 100644 index 000000000..8f2fcebea --- /dev/null +++ b/_test/tests/inc/pageutils_isHiddenPage.test.php @@ -0,0 +1,37 @@ +prepare(''); + + $this->assertFalse(isHiddenPage('test')); + } + + function testHiddenOffAdmin(){ + $this->prepare('^:test$', 'admin'); + + $this->assertFalse(isHiddenPage('test')); + } + + function testHiddenOnMatch(){ + $this->prepare(); + + $this->assertTrue(isHiddenPage('test')); + } + + function testHiddenOnNoMatch(){ + $this->prepare(); + + $this->assertFalse(isHiddenPage('another')); + } + +} +//Setup VIM: ex: et ts=4 : -- cgit v1.2.3 From 8449cc9d82848df24eb88a73dd81d7e048933287 Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Wed, 31 Oct 2012 16:51:54 +0100 Subject: added event PAGEUTILS_ID_HIDEPAGE --- _test/tests/inc/PageUtilsIsHiddenPage.test.php | 49 +++++++++++++++++++++++++ _test/tests/inc/pageutils_isHiddenPage.test.php | 37 ------------------- inc/pageutils.php | 8 ++++ 3 files changed, 57 insertions(+), 37 deletions(-) create mode 100644 _test/tests/inc/PageUtilsIsHiddenPage.test.php delete mode 100644 _test/tests/inc/pageutils_isHiddenPage.test.php diff --git a/_test/tests/inc/PageUtilsIsHiddenPage.test.php b/_test/tests/inc/PageUtilsIsHiddenPage.test.php new file mode 100644 index 000000000..153d0e8f6 --- /dev/null +++ b/_test/tests/inc/PageUtilsIsHiddenPage.test.php @@ -0,0 +1,49 @@ +prepare(''); + + $this->assertFalse(isHiddenPage('test')); + } + + function testHiddenOffAdmin(){ + $this->prepare('^:test$', 'admin'); + + $this->assertFalse(isHiddenPage('test')); + } + + function testHiddenOnMatch(){ + $this->prepare(); + + $this->assertTrue(isHiddenPage('test')); + } + + function testHiddenOnNoMatch(){ + $this->prepare(); + + $this->assertFalse(isHiddenPage('another')); + } + + function testEventHandler() { + global $EVENT_HANDLER; + $this->prepare(); + $EVENT_HANDLER->register_hook('PAGEUTILS_ID_HIDEPAGE', 'BEFORE', $this, 'alwaysHide'); + + $this->assertFalse(isHiddenPage('test')); + } + + function alwaysHide(Doku_Event &$event, $params) { + $event->data['hide'] = true; + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/pageutils_isHiddenPage.test.php b/_test/tests/inc/pageutils_isHiddenPage.test.php deleted file mode 100644 index 8f2fcebea..000000000 --- a/_test/tests/inc/pageutils_isHiddenPage.test.php +++ /dev/null @@ -1,37 +0,0 @@ -prepare(''); - - $this->assertFalse(isHiddenPage('test')); - } - - function testHiddenOffAdmin(){ - $this->prepare('^:test$', 'admin'); - - $this->assertFalse(isHiddenPage('test')); - } - - function testHiddenOnMatch(){ - $this->prepare(); - - $this->assertTrue(isHiddenPage('test')); - } - - function testHiddenOnNoMatch(){ - $this->prepare(); - - $this->assertFalse(isHiddenPage('another')); - } - -} -//Setup VIM: ex: et ts=4 : diff --git a/inc/pageutils.php b/inc/pageutils.php index 55cc081a1..853d3fb4d 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -538,6 +538,14 @@ function getCacheName($data,$ext=''){ function isHiddenPage($id){ global $conf; global $ACT; + + $data = array( + 'id' => $id, + 'hidden' => false + ); + trigger_event('PAGEUTILS_ID_HIDEPAGE', $id); + + if ($data['hidden']) return true; if(empty($conf['hidepages'])) return false; if($ACT == 'admin') return false; -- cgit v1.2.3 From fb55b51ef82bc3066173e7547500d9e79c410e34 Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Mon, 5 Nov 2012 10:57:42 +0100 Subject: changed PAGEUTILS_ID_HIDEPAGE to has BEFORE/AFTER --- _test/tests/inc/PageUtilsIsHiddenPage.test.php | 52 ++++++++++++++++++++++++-- inc/pageutils.php | 22 ++++++----- 2 files changed, 61 insertions(+), 13 deletions(-) diff --git a/_test/tests/inc/PageUtilsIsHiddenPage.test.php b/_test/tests/inc/PageUtilsIsHiddenPage.test.php index 153d0e8f6..a7077862e 100644 --- a/_test/tests/inc/PageUtilsIsHiddenPage.test.php +++ b/_test/tests/inc/PageUtilsIsHiddenPage.test.php @@ -33,16 +33,62 @@ class PageUtilsIsHiddenPageTest extends DokuWikiTest { $this->assertFalse(isHiddenPage('another')); } - function testEventHandler() { + function testEventHandlerBefore() { global $EVENT_HANDLER; $this->prepare(); $EVENT_HANDLER->register_hook('PAGEUTILS_ID_HIDEPAGE', 'BEFORE', $this, 'alwaysHide'); - $this->assertFalse(isHiddenPage('test')); + $this->assertTrue(isHiddenPage('another')); } function alwaysHide(Doku_Event &$event, $params) { - $event->data['hide'] = true; + $event->data['hidden'] = true; + } + + function testEventHandlerBeforeAndPrevent() { + global $EVENT_HANDLER; + $this->prepare(); + $EVENT_HANDLER->register_hook('PAGEUTILS_ID_HIDEPAGE', 'BEFORE', $this, 'showBefore'); + + $this->assertFalse(isHiddenPage('test')); + } + + function showBefore(Doku_Event &$event, $params) { + $event->data['hidden'] = false; + $event->preventDefault(); + $event->stopPropagation(); + } + + function testEventHandlerAfter() { + global $EVENT_HANDLER; + $this->prepare(); + $EVENT_HANDLER->register_hook('PAGEUTILS_ID_HIDEPAGE', 'AFTER', $this, 'alwaysHide'); + + $this->assertTrue(isHiddenPage('another')); + } + + function testEventHandlerAfterHide() { + global $EVENT_HANDLER; + $this->prepare(); + $EVENT_HANDLER->register_hook('PAGEUTILS_ID_HIDEPAGE', 'AFTER', $this, 'hideBeforeWithoutPrevent'); + + $this->assertTrue(isHiddenPage('another')); + } + + function hideBeforeWithoutPrevent(Doku_Event &$event, $params) { + $event->data['hidden'] = true; + } + + function testEventHandlerAfterShow() { + global $EVENT_HANDLER; + $this->prepare(); + $EVENT_HANDLER->register_hook('PAGEUTILS_ID_HIDEPAGE', 'AFTER', $this, 'showAfter'); + + $this->assertFalse(isHiddenPage('test')); + } + + function showAfter(Doku_Event &$event, $params) { + $event->data['hidden'] = false; } } diff --git a/inc/pageutils.php b/inc/pageutils.php index 853d3fb4d..3bb10883f 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -536,23 +536,25 @@ function getCacheName($data,$ext=''){ * @author Andreas Gohr */ function isHiddenPage($id){ - global $conf; - global $ACT; - $data = array( 'id' => $id, 'hidden' => false ); - trigger_event('PAGEUTILS_ID_HIDEPAGE', $id); + trigger_event('PAGEUTILS_ID_HIDEPAGE', $data, '_isHiddenPage'); + return $data['hidden']; +} - if ($data['hidden']) return true; - if(empty($conf['hidepages'])) return false; - if($ACT == 'admin') return false; +function _isHiddenPage(&$data) { + global $conf; + global $ACT; - if(preg_match('/'.$conf['hidepages'].'/ui',':'.$id)){ - return true; + if ($data['hidden']) return; + if(empty($conf['hidepages'])) return; + if($ACT == 'admin') return; + + if(preg_match('/'.$conf['hidepages'].'/ui',':'.$data['id'])){ + $data['hidden'] = true; } - return false; } /** -- cgit v1.2.3