Joomla Back-end Pagination не работает в пользовательском приложении MVC - PullRequest
0 голосов
/ 12 сентября 2011

Back-end Joomla Backg end не работает в пользовательском приложении MVC

Показывает общее количество страниц, но любой элемент управления, нажатый с нумерацией страниц, getListFooter ();не удается и запускается обратно на экран-заставку "/ administrator /index.php? option = com_agmanage"

Это сбивает с толку, так как $ this-> pagination-> getRowOffset ($ i);правильно отображается.

Вот представление по умолчанию:

    <?php
/**
* @version 1.0
* @package agmanage 1.0.0
*/

defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.view');
jimport('joomla.html.pane');

class agmanageViewConfiguration extends JView
{
    function display($tpl = null)
    {
        global $mainframe;

        JToolBarHelper::title('Agility Eye Management','agmanage');

        JSubMenuHelper::addEntry(JText::_('Results'), 'index.php?option=com_agmanage&view=memberships');
        JSubMenuHelper::addEntry(JText::_('View Dogs Handlers & Subscribers'), 'index.php?option=com_agmanage&view=transactions');
        JSubMenuHelper::addEntry(JText::_('Database Administration'), 'index.php?option=com_agmanage&view=configuration', true);
        JSubMenuHelper::addEntry(JText::_('Manage Users'), 'index.php?option=com_rsmembership&view=users');
        JSubMenuHelper::addEntry(JText::_('Back to Splashscreen'), 'index.php?option=com_agmanage', true);

        $task = JRequest::getVar('task','');    

        JToolBarHelper::apply();
        JToolBarHelper::save();
        JToolBarHelper::cancel();

        $config = agmanageHelper::getConfig();
        $this->assignRef('config', $config);

        $pane =& JPane::getInstance('Tabs', array(), true);
        $this->assignRef('pane', $pane);

        $this->assignRef('sortColumn', JRequest::getVar('filter_order','date'));
        $this->assignRef('sortOrder', JRequest::getVar('filter_order_Dir','DESC'));

        $this->assignRef('configuration', $this->get('configuration'));

        $this->assignRef('cache', $this->get('cache'));

        $this->assignRef('pagination', $this->get('pagination'));

        $filter_word = JRequest::getString('search', '');
        $this->assignRef('filter_word', $filter_word);

        parent::display($tpl);
    }
}

Вот шаблон, который запускается им ($ tpl):

<?php
/**
* @version 1.0
* @package agmanage 1.0.0
*/

defined('_JEXEC') or die('Restricted access');

JHTML::_('behavior.tooltip');
?>
<form action="index.php?option=com_agmanage&view=configuration" method="post" name="adminForm" id="adminForm">
<?php
echo $this->pane->startPane('configuration-pane');

echo $this->pane->startPanel(JText::_('Edit Dogs'), 'configuration-patches');
?>
<div class="col100">
    <? /* START OF EDIT DOGS */?>
    <table class="adminform">
        <tr>
            <td width="100%">
                <?php echo JText::_( 'Search (By Dog name)' ); ?>
                <input type="text" name="search" id="search" value="<?php echo $this->filter_word; ?>" class="text_area" onChange="document.adminForm.submit();" />
                <button onclick="this.form.submit();"><?php echo JText::_( 'Go' ); ?></button>
                <button onclick="this.form.getElementById('search').value='';this.form.submit();"><?php echo JText::_( 'Reset' ); ?></button>
            </td>
            <td nowrap="nowrap">&nbsp;</td>
        </tr>
    </table>
    <div id="editcell1">
        <table class="adminlist">
            <thead>
                <tr>
                    <th width="5"><?php echo JText::_( '#' ); ?></th>
                    <th><?php echo JText::_( 'Dog Name' ); ?></th>
                    <th width="100"><?php echo JText::_('Status'); ?></th>
                    <th width="5"><?php echo JText::_('ABC'); ?></th>
                    <th width="150"><?php echo JText::_('Club'); ?></th>
                    <th width="140"><?php echo JText::_('Usual Handler'); ?></th>
                    <th><?php echo JText::_('Subscriber'); ?></th>
                    <th width="5"><?php echo JText::_( 'Edit' ); ?></th>

                </tr>
            </thead>
    <?php
    $k = 0;
    $i = 0;
    $n = count($this->configuration);
    foreach ($this->configuration as $row)

    {
    ?>
        <tr class="row<?php echo $k; ?>">
            <td align="center"><?php echo $this->pagination->getRowOffset($i); ?></td>
            <td align="center"><?php echo $row->DogName; ?></td>
            <td align="center"><?php echo $row->StatusCode; ?></td>
            <td align="center">
            <?php 
            if ($row->ABC=="1")
                echo "Yes";
            else
                echo "No";

            ?>
            </td>
            <td align="center">
            <?php 
            $con = mysql_connect("**********************");
            if (!$con)
                {
                die('Could not connect: ' . mysql_error());
                }

                mysql_select_db("agilityeye", $con);
                $temp=$row->Clubcode;
                //echo $temp;
                $result = mysql_query("SELECT * FROM club WHERE Clubcode=$temp") or die(mysql_error());

                while($new = mysql_fetch_array($result))
                 {
                 echo $new['Club'];
                 }

                mysql_close($con);
            ?>
            </td>
            <td align="center"><?php 

            $con = mysql_connect("**********************");
            if (!$con)
                {
                die('Could not connect: ' . mysql_error());
                }

                mysql_select_db("agilityeye", $con);
                $temp=$row->HandlerId;
                //echo $temp;
                $result = mysql_query("SELECT * FROM handlers WHERE handlerId=$temp") or die(mysql_error());

                while($new1 = mysql_fetch_array($result))
                 {
                 echo $new1['HandlerFore'] . " " . $new1['HandlerSur'];
                 }

                mysql_close($con);

            ?></td>
            <td align="center"><?php 

            $con = mysql_connect("**********************");
            if (!$con)
                {
                die('Could not connect: ' . mysql_error());
                }

                mysql_select_db("agilityeye", $con);
                $temp=$row->Subcode;
                echo $temp;
                $result = mysql_query("SELECT * FROM jos_users WHERE calluser=$temp") or die(mysql_error());

                while($new2 = mysql_fetch_array($result))
                 {
                 echo " - ";
                 echo $new2['name'];     
                 }

                mysql_close($con);

            ?></td>

            <td><a href="<?php //echo JRoute::_('index.php?option=com_agmanage&controller=configuration&task=edit&handler='.$row->Subcode.'&dog='.$row->Dogcode); ?>"><IMG src="http://www.agilityeye.co.uk.juliet.webhoster.co.uk/images/M_images/edit.png"></a></td>

        </tr>
    <?php
        $i++;
        $k=1-$k;
    }
    ?>
        <tfoot>
            <tr>
                <td colspan="12"><?php echo $this->pagination->getListFooter(); ?></td>
            </tr>
        </tfoot>
        </table>
    </div>

    <?php echo JHTML::_( 'form.token' ); ?>
    <input type="hidden" name="boxchecked" value="0" />
    <input type="hidden" name="option" value="com_agmanage" />
    <input type="hidden" name="view" value="configuration" />
    <input type="hidden" name="controller" value="configuration" />
    <input type="hidden" name="task" value="" />

    <? /* END OF EDIT DOGS */?>
    </fieldset>
</div>
<div class="clr"></div>
<?php
echo $this->pane->endPanel();

echo $this->pane->startPanel(JText::_('New Tab'), 'new');
?>
<div class="col100">
    <fieldset class="adminform">
        <table class="admintable">
        <tr> Spacer</tr>
        </table>
    </fieldset>
</div>
<div class="clr"></div>
<?php
echo $this->pane->endPanel();

echo $this->pane->endPane();
?>

<?php echo JHTML::_('form.token'); ?>
<input type="hidden" name="option" value="com_agmanage" />
<input type="hidden" name="view" value="agmanage" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="controller" value="configuration" />
</form>

<script type="text/javascript">
function rsm_enable_registration(what)
{
    if (what == 1)
        $('registration_page').disabled = false;
    else
        $('registration_page').disabled = true;
}
</script>

<?php
//keep session alive while editing
JHTML::_('behavior.keepalive');
?>

И модель:

        <?php
        /**
        * @version 1.0
        * @package agmanage 1.0.0
        */

        defined('_JEXEC') or die('Restricted access');

        jimport('joomla.application.component.model');

        class agmanageModelConfiguration extends JModel
{
    var $_data = null;
    var $_total = 0;
    var $_query = '';
    var $_pagination = null;
    var $_db = null;

    var $_id = 0;

    function __construct()
    {
        parent::__construct();
        $this->_db = JFactory::getDBO();
        $this->_query = $this->_buildQuery();

        global $mainframe, $option;

        // Get pagination request variables
        $limit = $mainframe->getUserStateFromRequest($option.'.configuration.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
        $limitstart = $mainframe->getUserStateFromRequest($option.'.configuration.limitstart', 'limitstart', 0, 'int');

        // In case limit has been changed, adjust it
        $limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0);

        $this->setState($option.'.configuration.limit', $limit);
        $this->setState($option.'.configuration.limitstart', $limitstart);
    }

    function _buildQuery()
    {
        global $mainframe;

        //$query = "SELECT t.*, IFNULL(u.email, t.user_email) AS email FROM #__agmanage_configuration t LEFT JOIN #__users u ON (`t`.`user_id`=`u`.`id`)";
        $query = "SELECT * FROM dog";

        $filter_word = JRequest::getString('search', '');
        if (!empty($filter_word))
            $query .= " WHERE DogName LIKE '%".$filter_word."%'";
        /*
        $sortColumn = JRequest::getVar('filter_order', 'date');
        $sortColumn = $this->_db->getEscaped($sortColumn);

        $sortOrder = JRequest::getVar('filter_order_Dir', 'DESC');
        $sortOrder = $this->_db->getEscaped($sortOrder);

        $query .= " ORDER BY ".$sortColumn." ".$sortOrder;
        */
        return $query;
    }

    function getConfiguration()
    {
        global $option;

        if (empty($this->_data))
            $this->_data = $this->_getList($this->_query, $this->getState($option.'.configuration.limitstart'), $this->getState($option.'.configuration.limit'));

        return $this->_data;
    }

    function getTotal()
    {
        if (empty($this->_total))
            $this->_total = $this->_getListCount($this->_query); 

        return $this->_total;
    }

    function getPagination()
    {
        if (empty($this->_pagination))
        {
            global $option;
            jimport('joomla.html.pagination');
            $this->_pagination = new JPagination($this->getTotal(), $this->getState($option.'.configuration.limitstart'), $this->getState($option.'.configuration.limit'));
        }

        return $this->_pagination;
    }

    function remove($cids)
    {
        $cids = implode(',', $cids);

        $query = "DELETE FROM #__agmanage_configuration WHERE `id` IN (".$cids.")";
        $this->_db->setQuery($query);
        $this->_db->query();

        return true;
    }

    function getCache()
    {
        return agmanageHelper::getCache();
    }
        }
        ?>

1 Ответ

0 голосов
/ 12 сентября 2011

Если убрать нумерацию страниц, все ли отображается правильно? Сначала убедитесь, что он работает без нумерации страниц, чтобы не преследовать проблему, которой нет. Если это работает без, то выполните пошаговую реализацию в Joomla Docs - http://docs.joomla.org/Using_JPagination_in_your_component

...