Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Register Browse Service

Create a class Browse under Service directory. then paste following code.

Code Block
php
php
<?php

namespace Apps\TodoList\Service;

class Browse extends \Phpfox_Service
{
    public function __construct()
    {
        $this->_sTable = \Phpfox::getT('todolist_task');
    }

    /**
     *
     */
    public function query()
    {

    }

    public function getQueryJoins($bIsCount = false, $bNoQueryFriend = false)
    {

    }
}

Edit start.php, register a new service

Code Block
php
php
// register service
$module->addServiceNames([
    'todo.browse'=> Service\Browse::class,
]);

Add Search Form and Paginator

Update IndexController, paste following code

Code Block
php
php
<?php

namespace Apps\TodoList\Controller;

use Phpfox;
use Phpfox_Pager;

//controllers must be a child of \Phpfox_Component class.
//
class IndexController extends \Phpfox_Component
{
    public function process()
    {
         // Get phpFox core template service
        $template = $this->template();

        // set view title
        $template->setTitle('To Do List');

        // set view breadcrumb
        $template->setBreadCrumb('To Do List',
            $this->url()->makeUrl('to-do-list'));

        // add your section menus
        $template->buildSectionMenu('to-do-list', [
            'Browse' => $this->url()->makeUrl('/to-do-list'),
            'Create' => $this->url()->makeUrl('/to-do-list/add'),
        ]);

        $template->menu('Add To Do', $this->url()->makeUrl('/to-do-list/add'));

        // set is in profile
        $bIsProfile = false;

        // Configure search form
        $search = $this->search();

        // get current view
        $sView = $this->request()->get('view');

        // form action
        $sFormAction = $this->url()->makeUrl('to-do-list', ['view' => $sView]);

        $search->set([
            'type'           => 'todo',
            'field'          => 'todo.task_id',
            'ignore_blocked' => true,
            'search_tool'    => [
                'table_alias' => 'todo',
                'search'      => [
                    'action'        => $sFormAction,
                    'default_value' => '',
                    'name'          => 'search',
                    'field'         => ['todo.name'],
                ],
                'sort'        => [
                    'latest'     => ['todo.time_stamp', _p('Latest')],
                    'most-liked' => ['todo.total_like', _p('Most Liked')],
                ],
                'show'        => [10, 20, 30],
            ],
        ]);

        // Configure search service
        $aBrowseParams = [
            'module_id' => 'todo',
            'alias'     => 'todo',
            'field'     => 'task_id',
            'table'     => Phpfox::getT('todolist_task')
        ];

         $search->setContinueSearch(true);
        $search->browse()->params($aBrowseParams)->execute();
        $cnt = $search->browse()->getCount();
        $aItems = $search->browse()->getRows();

        // register pager service
        Phpfox_Pager::instance()->set([
            'page'  => $search->getPage(),
            'size'  => $search->getDisplay(),
            'count' => $search->browse()->getCount(),
        ]);

        // assign variables to template
        $this->template()->assign([
                'iCnt'         => $cnt,
                'aItems'       => $aItems,
                'sSearchBlock' => _p('search to do'),
                'bIsProfile'   => $bIsProfile,
                'sTaskStatus'  => $this->request()->get('status'),
                'sView'        => $sView,
            ]
        );
     }
}

Edit index.html.php, paste following code.

Code Block
php
php
{if !count($aItems)}
    {if !PHPFOX_IS_AJAX}
    <div class="extra_info">
        {_p var='no_to_to_list_item_found'}
    </div>
    {/if}
{else}
    {if !PHPFOX_IS_AJAX}
    <div class="item-collections item-collections-2">
    {/if}

    {foreach from=$aItems name=aItem item=aItem}
    <article>
        <a href="{ permalink module='todo.view' id=$aItem.task_id title=$aItem.name }"><h4>{$aItem.name}</h4></a>
        <p>{$aItem.description}</p>
        <abbr>
            <span>Status:</span><span>
            { if $aItem.task_status >0 }complete{else}in-complete{/if}
            </span><br/>
            <span>Created:</span><span>
            {$aItem.time_stamp|convert_time}
            </span><br/>
        </abbr>
    </article>
    {/foreach}
    {pager}
    {if !PHPFOX_IS_AJAX}
    </div>
    {/if}
{/if}

...