hey leute,
ich soll für meinen chef eine Komponente erstellen, mit der partner der firma ihre projekte "registrieren" können.
Da es eine schöne komponente von einem noch cooleren buch gibt, die in etwa das gleiche macht (com_reviews schreibt Restaurantreviews in eine Datenkbank und gibt diese im frontend aus)
dachte ich mir, nehm ich diese doch als grundbasis.
also bin ich hergegangen, und hab erstmal die datenbankfelder geändert und meinen wünschen nach angepasst.
danach bin hab ich mir die dateien
admin.reviews.html.php (das formular zum übergeben der daten)
controller.php (in der dateien sind die funktionen drinnen die verwendet werden sollen)
und die /tables/review.php (setzt die variablen auf null)
zur hand genommen und angepasst.
jetzt schreibt er aber nur das erstellungsdatum in die datenbank, der rest ist leer.
ich find leider den fehler nciht, kann mir wer helfen?
admin.reviews.html.php:
Code:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
class HTML_reviews
{
function editReview( $row, $lists, $option )
{
// $editor =& JFactory::getEditor();
// JHTML::_('behavior.calendar');
?>
<form action="index.php" method="post"
name="adminForm" id="adminForm">
<fieldset class="adminform">
<legend>Projektdetails</legend>
<table class="admintable">
<tr>
<td width="100" align="right" class="key">
Partnername:
</td>
<td>
<input class="text_area" type="text" name="partnername"
id="partnername" size="50" maxlength="250"
value="<?php echo $row->partner_partnername;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Projektname:
</td>
<td>
<input class="text_area" type="text" name="projektname"
id="projektname" size="50" maxlength="250"
value="<?php echo $row->partner_projektname;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Ansprechpartner:
</td>
<td>
<input class="text_area" type="text" name="ansprechpartner"
id="ansprechpartner" size="50" maxlength="250"
value="<?php echo $row->partner_ansprechpartner;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Partner Email:
</td>
<td>
<input class="text_area" type="text" name="partneremail"
id="partneremail" size="50" maxlength="250"
value="<?php echo $row->partner_email;?>" />
</td>
</tr>
<p><strong>Kunde<strong></p>
<tr>
<td width="100" align="right" class="key">
Firmenname:
</td>
<td>
<input class="text_area" type="text" name="firmenname"
id="firmenname" size="50" maxlength="250"
value="<?php echo $row->kunde_firmenname;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Internetadresse:
</td>
<td>
<input class="text_area" type="text" name="internetadresse"
id="internetadresse" size="50" maxlength="250"
value="<?php echo $row->kunde_internet;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Straße:
</td>
<td>
<input class="text_area" type="text" name="strasse"
id="strasse" size="50" maxlength="250"
value="<?php echo $row->kunde_strasse;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Ort:
</td>
<td>
<input class="text_area" type="text" name="ort"
id="ort" size="50" maxlength="250"
value="<?php echo $row->kunde_ort;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Postleitzahl:
</td>
<td>
<input class="text_area" type="text" name="postleitzahl"
id="postleitzahl" size="10" maxlength="5"
value="<?php echo $row->kunde_postleitzahl;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Land:
</td>
<td>
<?php
echo $lists['land'];
?>
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Projektbetrag:
</td>
<td>
<input class="text_area" type="text" name="projektbetrag"
id="projektbetrag" size="50" maxlength="250"
value="<?php echo $row->kunde_projektbetrag;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Zeitraum:<br />
<span class="small"><strong>Beispiel:</strong> 30-04-2009 bis 15-06-2009</span>
</td>
<td>
<input class="text_area" type="text" name="zeitraum"
id="zeitraum" size="50" maxlength="250"
value="<?php echo $row->kunde_zeitraum;?>" />
</td>
</tr>
</table>
</fieldset>
<input type="hidden" name="id" value="<?php echo $row->id; ?>" />
<input type="hidden" name="published_date" value="<?php echo $row->published_date; ?>" />
<input type="hidden" name="option" value="<?php echo $option;?>" />
<input type="hidden" name="task" value="" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>
<?php
}
..........
controller.php
Code:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.application.component.controller' );
class ReviewController extends JController
{
function __construct( $default = array() )
{
parent::__construct( $default );
$this->registerTask( 'add' , 'edit' );
$this->registerTask( 'apply', 'save' );
$this->registerTask( 'unpublish', 'publish' );
}
function edit()
{
global $option;
$row =& JTable::getInstance('review', 'Table');
$cid = JRequest::getVar( 'cid', array(0), '', 'array' );
$id = $cid[0];
$row->load($id);
$lists = array();
$land = array(
'0' => array('value' => 'Deutschland', 'text' => 'Deutschland'),
'1' => array('value' => 'Oesterreich', 'text' => 'Österreich'),
'2' => array('value' => 'Schweiz', 'text' => 'Schweiz'),
);
$lists['land'] = JHTML::_('select.genericlist', $land, 'land', 'class="inputbox" '. '', 'value', 'text', $row->kunde_land );
// $lists['smoking'] = JHTML::_('select.booleanlist', 'smoking', 'class="inputbox"', $row->smoking);
// $lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $row->published);
HTML_reviews::editReview($row, $lists, $option);
}
function save()
{
global $option;
JRequest::checkToken() or die( 'Invalid Token' );
$row =& JTable::getInstance('review', 'Table');
if (!$row->bind(JRequest::get('post'))) {
echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
exit();
}
$row->id = (int) $row->id;
// Hier ist noch ein Fehler. er schreibt noch nicht alle daten in die datenbank
$date =& JFactory::getDate($row->published_date);
$row->published_date = $date->toMySQL();
if (!$row->store()) {
echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
exit();
}
switch ($this->_task)
{
case 'apply':
$msg = 'Changes to Review saved';
$link = 'index.php?option=' . $option . '&task=edit&cid[]='. $row->id;
break;
case 'save':
default:
$msg = 'Review Saved';
$link = 'index.php?option=' . $option;
break;
}
$this->setRedirect($link, $msg);
}
function showReviews()
{
global $option, $mainframe;
$limit = JRequest::getVar('limit', $mainframe->getCfg('list_limit'));
$limitstart = JRequest::getVar('limitstart', 0);
$db =& JFactory::getDBO();
$query = "SELECT count(*) FROM #__reviews";
$db->setQuery( $query );
$total = $db->loadResult();
$query = "SELECT * FROM #__reviews";
$db->setQuery( $query, $limitstart, $limit );
$rows = $db->loadObjectList();
if ($db->getErrorNum()) {
echo $db->stderr();
return false;
}
jimport('joomla.html.pagination');
$pageNav = new JPagination($total, $limitstart, $limit);
HTML_reviews::showReviews( $option, $rows, $pageNav );
}
function remove()
{
global $option;
$cid = JRequest::getVar( 'cid', array(), '', 'array' );
$db =& JFactory::getDBO();
if(count($cid))
{
JArrayHelper::toInteger($cid);
$cids = implode( ',', $cid );
$query = "DELETE FROM #__reviews WHERE id IN ( $cids )";
$db->setQuery( $query );
if (!$db->query()) {
echo "<script> alert('".$db->getErrorMsg()."'); window. history.go(-1); </script>\n";
}
}
$this->setRedirect( 'index.php?option=' . $option );
}
function publish()
{
global $option;
$cid = JRequest::getVar( 'cid', array(), '', 'array' );
if( $this->_task == 'publish')
{
$publish = 1;
}
else
{
$publish = 0;
}
$reviewTable =& JTable::getInstance('review', 'Table');
$reviewTable->publish($cid, $publish);
$this->setRedirect( 'index.php?option=' . $option );
}
function comments()
{
global $option, $mainframe;
$limit = JRequest::getVar('limit', $mainframe->getCfg('list_limit'));
$limitstart = JRequest::getVar('limitstart', 0);
$db =& JFactory::getDBO();
$query = "SELECT count(*) FROM #__reviews_comments";
$db->setQuery( $query );
$total = $db->loadResult();
$query = "SELECT c.*, r.name FROM #__reviews_comments AS c LEFT JOIN #__reviews AS r ON r.id = c.review_id ";
$db->setQuery( $query, $limitstart, $limit );
$rows = $db->loadObjectList();
if ($db->getErrorNum())
{
echo $db->stderr();
return false;
}
jimport('joomla.html.pagination');
$pageNav = new JPagination($total, $limitstart, $limit);
HTML_reviews::showComments( $option, $rows, $pageNav );
}
function editComment()
{
global $option;
$row =& JTable::getInstance('comment', 'Table');
$cid = JRequest::getVar( 'cid', array(0), '', 'array' );
$id = $cid[0];
$row->load($id);
HTML_reviews::editComment($row, $option);
}
function saveComment()
{
global $option;
$row =& JTable::getInstance('comment', 'Table');
if (!$row->bind(JRequest::get('post'))) {
echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
exit();
}
if (!$row->store()) {
echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
exit();
}
$this->setRedirect('index.php?option=' . $option . '&task=comments', 'Comment changes saved');
}
function removeComment()
{
global $option;
$cid = JRequest::getVar( 'cid', array(), '', 'array' );
$db =& JFactory::getDBO();
if(count($cid))
{
JArrayHelper::toInteger($cid);
$cids = implode( ',', $cid );
$query = "DELETE FROM #__reviews_comments WHERE id IN ( $cids )";
$db->setQuery( $query );
if (!$db->query()) {
echo "<script> alert('".$db->getErrorMsg()."'); window.history.go(-1); </script>\n";
}
}
$this->setRedirect( 'index.php?option=' . $option . '&task=comments' );
}
}
?>
admin.reviews.php
Code:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once( JApplicationHelper::getPath( 'admin_html' ) );
require_once( JPATH_COMPONENT.DS.'controller.php' );
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
$controller = new ReviewController( array('default_task' => 'showReviews') );
$controller->execute( JRequest::getVar( 'task' ) );
$controller->redirect();
?>
Code:
<?php
defined('_JEXEC') or die('Restricted access');
class TableReview extends JTable
{
var $id = null;
var $partner_partnername = null;
var $partner_projektname = null;
var $partner_ansprechpartner = null;
var $partner_email = null;
var $kunde_firmenname = null;
var $kunde_internet = null;
var $kunde_strasse = null;
var $kunde_ort = null;
var $kunde_postleitzahl = null;
var $kunde_land = null;
var $kunde_projektbetrag = null;
var $kunde_zeitraum = null;
var $user_id = null;
var $published_date = null;
var $published = null;
function __construct(&$db)
{
parent::__construct( '#__reviews', 'id', $db );
}
}
?>