kastaneda: (Default)
[personal profile] kastaneda

function buildPagerXml(&$xmlWriter$page$itemsCount$itemsPerPage$pagesPerPager) {
    
$pageCount floor( ($itemsCount 1) / $itemsPerPage 1);
    
$startItem $itemsPerPage * ($page 1) + 1;
    
$endItem $itemsPerPage $page;
    if (
$endItem $itemsCount)
        
$endItem $itemsCount;

    
$xmlWriter->WriteStartElement("pager");
    
$xmlWriter->WriteElementString("items-per-page"$itemsPerPage);
    
$xmlWriter->WriteElementString("page-count"$pageCount);
    
$xmlWriter->WriteElementString("current-page"$page);

    
$xmlWriter->WriteElementString("start-item"$startItem);
    
$xmlWriter->WriteElementString("end-item"$endItem);

    
$xmlWriter->WriteStartElement("first-page");
    if (
$page == 1)
        
$xmlWriter->WriteAttributeString("current""");
    
$xmlWriter->WriteString("1");
    
$xmlWriter->WriteEndElement();

    
$xmlWriter->WriteStartElement("previous-page");
    if (
$page == 1)
        
$xmlWriter->WriteAttributeString("current""");
    
$xmlWriter->WriteString($page - ($page == 1));
    
$xmlWriter->WriteEndElement();

    
$xmlWriter->WriteStartElement("next-page");
    if (
$page == $pageCount)
        
$xmlWriter->WriteAttributeString("current""");
    
$xmlWriter->WriteString($page + ($page == $pageCount 1));
    
$xmlWriter->WriteEndElement();

    
$xmlWriter->WriteStartElement("last-page");
    if (
$page == $pageCount)
        
$xmlWriter->WriteAttributeString("current""");
    
$xmlWriter->WriteString($pageCount);
    
$xmlWriter->WriteEndElement();

    if (
$pagesPerPager $pageCount) {
        
$startPage $page - (int) ($pagesPerPager 2);
        if (
$startPage 1)
            
$startPage 1;
        if (
$page + (int) ($pagesPerPager 2) > $pageCount)
            
$startPage $startPage - ($page + (int) (($pagesPerPager) / 2) - $pageCount) + ($pagesPerPager == 1);
        if (
$startPage 1)
            
$xmlWriter->WriteElementString("previous-pager-page",
                
$startPage 1);
        if (
$startPage $pagesPerPager $pageCount)
            
$xmlWriter->WriteElementString("next-pager-page",
                
$startPage $pagesPerPager);
        for (
$i $startPage$i $startPage $pagesPerPager$i++) {
            
$xmlWriter->WriteStartElement("page-link");
            if (
$i == $page)
                
$xmlWriter->WriteAttributeString("active""");
            
$xmlWriter->WriteString($i);
            
$xmlWriter->WriteEndElement();
        }
    }
    else
        for (
$i 1$i <= $pageCount$i++) {
            
$xmlWriter->WriteStartElement("page-link");
            if (
$i == $page)
                
$xmlWriter->WriteAttributeString("active""");
            
$xmlWriter->WriteString($i);
            
$xmlWriter->WriteEndElement();
        }
    
$xmlWriter->WriteEndElement();
}


Почуствуйте разницу.

Update. Для тех, кто в танке, поясняю. Этот кусок дерьма - пример кода, с которым мне приходится сейчас работать. По ссылке - код, с которым мне приходилось работать тогда (на другой фирме). И тот, и другой фрагменты кода написаны с примерно одинаковой целью; и то, и то я ПИЗДЕЦ КАК НЕ ОДОБРЯЮ.

Date: Tuesday, September 12th, 2006 09:28 am (UTC)
From: [identity profile] ldoroshe.livejournal.com
от хвастун %)

Date: Tuesday, September 12th, 2006 10:06 am (UTC)
From: [identity profile] yrashk.livejournal.com
а как по мне, Builder::XmlMarkup это бы сделал кудаааа как проще...

Date: Tuesday, September 12th, 2006 10:49 am (UTC)
From: [identity profile] yrashk.livejournal.com
а я и не говорил, что твой, а говорил что Builder::XmlMarkup решил бы это на порядок красивей ;)

Date: Tuesday, September 12th, 2006 10:55 am (UTC)
From: [identity profile] yrashk.livejournal.com
надо весь сайт на изящном другом переписать
а листалка, да, в принципе, она должна быть стандартной фичей веб-фреймворка. в рельсе есть Paginator для этого.

Date: Tuesday, September 12th, 2006 11:10 am (UTC)
From: [identity profile] yrashk.livejournal.com
если ты *действительно* хочешь денег, свяжись со мной

Date: Thursday, September 14th, 2006 01:54 pm (UTC)
From: [identity profile] yrashk.livejournal.com
ну извини, не хочешь -- не надо.

September 2025

M T W T F S S
12345 67
891011121314
15161718192021
22232425262728
2930