Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1311
  • Last Modified:

Joomla 1.5, component developement, how to mak a button on toolbar clickable

I'm trying to implement the review component provided in the book Learing Joomla! 1.5  Extension Development.

I have a tool bar from the two files toolbar.vnrbooking.html.php and in toolbar.vnrbooking.php and they are displayed correctly.

Now, I would like to click on the New button to create a new entry, but cliking on thr button on the button has no effect.

I don't understand how it shall work, here is my admin.vnrboking.php file. Is there something missing?

<?php
defined ('_JEXEC') or die ('Restricted access');
require_once( JApplicationHelper::getPath( 'admin_html' ) );
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
switch($task)
{
    case 'edit':
    case 'add':
        editBooking($option );
        break;
    case 'save':
        saveBooking($option );
        break;
    case 'remove':
        removeBoking($option);
    default:
        showBooking($option);
        break;
}
function editBooking($option)
{
    $row =& JTable::getInstance('Vnrbooking', 'Table');
    $cid = JRequest::getVar('cid', array(0), '', 'array');
    $id = $cid[0];
    $row->load($id);
    $lists = array();
    $present = array(
        '0' => array('value' => 'Sera présent', 'text' => 'Sera présent'),

        '1' => array('value' => 'Présent église', 'text' => 'Sera présent uniquement à église'),

        '2' => array('value' => 'Ne peut pas venir', 'text' => 'Ne peut pas venir'),
    );

    $lists['present'] = JHTML::_('select.genericlist', $present, 'present', 'class="inputbox" '. '', 'value',
        'text', $row->present );
    $lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"',
        $row->published );
    HTML_vnrbooking::editBooking($row, $lists, $option);
}

function saveBooking($option)
{
    global $mainframe;
    $row =& JTable::getInstance('vnrbooking','Table');
    if(!$row->bind(JRequest::get('post')))
    {
        JError::raiseError(500, $row->getError() );
    }
    if(!$row->confirmation_date)
        $row->confirmation_date = date( 'Y-m-d H:i:s');
    if(!$row->store())
    {
      JError::raiseError(500, $row->getError() );
    }
    $mainframe->redirect('index.php?option=' .
        $option, 'Booking Saved');
}

function showBooking($option)
{
    $db =& JFactory::getDBO();
    $query = "SELECT * FROM #__vnrbooking";
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    if($db->getErrorNum())
    {
        echo $db->stderr();
        return false;
    }
    HTML_vnrbooking::showBooking($option,$rows);
}

function removeBooking($option)
{
    global $mainframe;
    $cid = JRequest::getVar('cid', array(), '', 'array');
    $db =& JFactory::getDBO();
    if(count($cid))
    {
        $cids = implode(',', $cid);
        $query = "DELETE FROM #__vnrbooking WHERE id IN ($cids)";
        $db->setQuery($query);
        if(!$db->query())
        {
           echo "<script> alert('".$db->getErrorMsg()."');
           window.history.go(-1); </script>\n";
        }
    }
    $mainframe->redirect('index.php?option=' . $option);
}
?>
0
pviret
Asked:
pviret
  • 5
  • 4
1 Solution
 
binarygeekCommented:
hi add the code below to your toolbar.vnrbooking.php
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once( JApplicationHelper::getPath( 'toolbar_html' ) );
switch($task)
{
default:
TOOLBAR_vnrbooking::_DEFAULT();
break;
}
?>

Open in new window

0
 
binarygeekCommented:
then make a file toolbar.vnrbooking.html.php and add the following code

<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
class TOOLBAR_vnrbooking {
 
function _DEFAULT() {
JToolBarHelper::title( JText::_( VNR booking),'generic.png' );
JToolBarHelper::publishList();
JToolBarHelper::unpublishList();
JToolBarHelper::editList();
JToolBarHelper::addNew();
JToolBarHelper::deleteList();
}
 
}

Open in new window

0
 
binarygeekCommented:
this will create your working default toolbar , and you can make other cases and functions according to you $task
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
pviretAuthor Commented:
That is what I've done, my toolbar.vnrbooking.html.php is
<?php
defined ('_JEXEC') or die ('Restricted access');
class TOOLBAR_vnrbooking {
    function _NEW() {
        JToolBarHelper::save();
        JToolBarHelper::apply();
        JToolBarHelper::cancel();
    }
 
    function _DEFAULT() {
        JToolBarHelper::title( JText::_( 'VNR Booking' ), 'generic.png' );
        JToolBarHelper::publishList();
        JToolBarHelper::unpublishList();
        JToolBarHelper::editList();
        JToolBarHelper::deleteList();
        JToolBarHelper::addNew();
    }
}
?>

Open in new window

0
 
pviretAuthor Commented:
And my toolbar.vnrbooking.php is
<?php
defined ('_JEXEC') or die ('Restricted access');
require_once( JApplicationHelper::getPath( 'toolbar_html' ) );
switch($task)
{
    case 'edit':
    case 'add':
        TOOLBAR_vnrbooking::_NEW();
        break;
    
    default:
        TOOLBAR_vnrbooking::_DEFAULT();
        break;
}
?>

Open in new window

0
 
pviretAuthor Commented:
The toolbar is displayed correctly, but when I click on new button I don't get the

http://localhost/joomla-157/administrator/index.php?option=com_vnrbooking&task=add 

url as expected, but only the following url

http://localhost/joomla-157/administrator/index.php?option=com_vnrbooking# 

that's the same for the other buttons.
0
 
binarygeekCommented:
Please try adding this just after the current function in admin.vnrbooking.html.php
<script language="javascript" type="text/javascript">
function submitbutton(pressbutton) {
var form = document.adminForm;
if (pressbutton == 'cancel') {
submitform( pressbutton );
return;
} else {
submitform( pressbutton );
}
}
</script>

Open in new window

0
 
binarygeekCommented:
Also please make sure your form name is adminForm and it has atleast following hidden fields
<input type="hidden" name="option" value="<?php echo $option;?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
0
 
pviretAuthor Commented:
Thank you for your help, I had also some other problem but I found a way
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now