/** * * * @param array $Options * @throws Exception */ public static function write($Options = array()) { static $WriteCount = 0; if (!self::$_CurrentPager) { if (is_a($Options, 'Gdn_Controller')) { self::$_CurrentPager = new PagerModule($Options); $Options = array(); } else { self::$_CurrentPager = new PagerModule(val('Sender', $Options, Gdn::controller())); } } $Pager = self::$_CurrentPager; $Pager->Wrapper = val('Wrapper', $Options, $Pager->Wrapper); $Pager->MoreCode = val('MoreCode', $Options, $Pager->MoreCode); $Pager->LessCode = val('LessCode', $Options, $Pager->LessCode); $Pager->ClientID = val('ClientID', $Options, $Pager->ClientID); $Pager->Limit = val('Limit', $Options, $Pager->Controller()->data('_Limit', $Pager->Limit)); $Pager->HtmlBefore = val('HtmlBefore', $Options, val('HtmlBefore', $Pager, '')); $Pager->CurrentRecords = val('CurrentRecords', $Options, $Pager->Controller()->data('_CurrentRecords', $Pager->CurrentRecords)); // Try and figure out the offset based on the parameters coming in to the controller. if (!$Pager->Offset) { $Page = $Pager->Controller()->Request->get('Page', false); if (!$Page) { $Page = 'p1'; foreach ($Pager->Controller()->RequestArgs as $Arg) { if (preg_match('`p\\d+`', $Arg)) { $Page = $Arg; break; } } } list($Offset, $Limit) = offsetLimit($Page, $Pager->Limit); $TotalRecords = val('RecordCount', $Options, $Pager->Controller()->data('RecordCount', false)); $Get = $Pager->Controller()->Request->get(); unset($Get['Page'], $Get['DeliveryType'], $Get['DeliveryMethod']); $Url = val('Url', $Options, $Pager->Controller()->SelfUrl . '?Page={Page}&' . http_build_query($Get)); $Pager->configure($Offset, $Limit, $TotalRecords, $Url); } elseif ($Url = val('Url', $Options)) { $Pager->Url = $Url; } echo $Pager->toString($WriteCount > 0 ? 'more' : 'less'); $WriteCount++; // list($Offset, $Limit) = offsetLimit(GetValue, 20); // $Pager->configure( // $Offset, // $Limit, // $TotalAddons, // "/settings/addons/$Section?Page={Page}" // ); // $Sender->setData('_Pager', $Pager); }