Hallo Leute,
ich habe mir jetzt einen Wolf gesucht. Es gibt zwar ein paar Beiträge hier, die in die Richtung Modulerweiterung gehen, mir aber nicht helfen können.
Folgendes.
Ich benötige vier neue Felder für Vaterartikel.
Diese habe ich auch schon angelegt, und mit hilfe meiner bescheidenen Kenntnisse es so hinbekommen, dass ich einen neuen Reiter in der Artikelverwaltung habe, und dort vier inputfelder zu sehen sind.
Wenn ich die Felder per MysqlTool eintrage, werden diese auch geladen.
Wenn ich diese per submitbutton speichern möchte kommt folgende Fehlermeldung.
Ausserdem habe ich das Problem, dass wenn ich auf den neuen Reiter in der Artikelverwaltung gehe, ich danach zwar die anderen Reiter anclicken kann, deren Inhalt aber nicht mehr gezeigt wird. Das geht dann erst wieder,
wenn ich im Hauptmenu auf Artikelverwaltung clicke.
Das Modul ist so aufgebaut, wobei ich die funktionen "render" und "save"
von der application/controllers/admin/article_main.php abgeschaut habe, und auf das (wahrscheinlich) nötigste verkleinert habe.
modules/article_extension/menu.xml
modules/article_extension/article_extension.php:
modules/article_extension/metadata.php
application/views/admin/tpl/article_extension.tpl
Ich würde mich freuen, wenn mir jemand helfen kann.
Grüße
Keno
ich habe mir jetzt einen Wolf gesucht. Es gibt zwar ein paar Beiträge hier, die in die Richtung Modulerweiterung gehen, mir aber nicht helfen können.
Folgendes.
Ich benötige vier neue Felder für Vaterartikel.
Diese habe ich auch schon angelegt, und mit hilfe meiner bescheidenen Kenntnisse es so hinbekommen, dass ich einen neuen Reiter in der Artikelverwaltung habe, und dort vier inputfelder zu sehen sind.
Wenn ich die Felder per MysqlTool eintrage, werden diese auch geladen.
Wenn ich diese per submitbutton speichern möchte kommt folgende Fehlermeldung.
Code:
oxSystemComponentException---!--NOT CAUGHT--!--oxException (time: 2014-01-16 11:55:11): [0]: Function 'getLink' does not exist or is not accessible! (article_extension) Stack Trace: #0 /path/to/application/components/oxcmp_lang.php(52): oxSuperCfg->__call('getLink', Array) #1 /path/to/application/components/oxcmp_lang.php(52): article_extension->getLink(2) #2 /path/to/application/controllers/oxubase.php(2239): oxcmp_lang->render() #3 /path/to/core/oxshopcontrol.php(491): oxUBase->render() #4 /path/to/core/oxshopcontrol.php(396): oxShopControl->_render(Object(ExceptionError)) #5 /path/to/core/oxshopcontrol.php(161): oxShopControl->_process('exceptionError', 'displayExceptio...') #6 /path/to/core/oxid.php(40): oxShopControl->start() #7 /path/to/index.php(28): Oxid::run() #8 /path/to/admin/index.php(29): require_once('/path/to/...') #9 {main} Faulty component -->
wenn ich im Hauptmenu auf Artikelverwaltung clicke.
Das Modul ist so aufgebaut, wobei ich die funktionen "render" und "save"
von der application/controllers/admin/article_main.php abgeschaut habe, und auf das (wahrscheinlich) nötigste verkleinert habe.
modules/article_extension/menu.xml
Code:
<?xml version="1.0" encoding="ISO-8859-15"?>
<OX>
<OXMENU id="NAVIGATION_ESHOPADMIN">
<MAINMENU id="mxmanageprod">
<SUBMENU id="mxarticles" cl="article" list="article_list">
<TAB id="steckbrief" cl="article_extension" />
</SUBMENU>
</MAINMENU>
</OXMENU>
</OX>
PHP Code:
<?php
class article_extension extends oxAdminDetails
{
//protected $_sThisTemplate = 'article_extension.tpl';
public function render()
{
$myConfig = $this->getConfig();
parent::render();
$this->_aViewData['edit'] = $oArticle = oxNew( 'oxarticle' );
$soxId = $this->getEditObjectId();
$svoxId = oxConfig::getParameter( "voxid" );
if ( isset( $svoxId ) && $svoxId == "-1" && isset($soxparentId) && $soxparentId && $soxparentId != "-1") {
return false;
}
if ( $soxId && $soxId != "-1")
{
// load object
$oArticle->loadInLang( $this->_iEditLang, $soxId );
// why? load object in other languages
/*$oOtherLang = $oArticle->getAvailableInLangs();
if (!isset($oOtherLang[$this->_iEditLang])) {
// echo "language entry doesn't exist! using: ".key($oOtherLang);
$oArticle->loadInLang( key($oOtherLang), $soxId );
} */
}
$oDB = oxDb::getDB();
$sArticleTable = getViewName( 'oxarticles', $this->_iEditLang );
$sSelect = "select $sArticleTable.oxtitle, $sArticleTable.wuchshoehe, $sArticleTable.bluehfarbe, $sArticleTable.bluehzeitpunkt, $sArticleTable.standort from $sArticleTable";
$sSelect .= " where $sArticleTable.oxid = '".$soxId."'";
$rs = $oDB->Execute( $sSelect);
if ($rs != false && $rs->RecordCount() > 0) {
while (!$rs->EOF) {
$sArtTitle = new oxField($rs->fields[0]);
$wuchshoehe = new oxField($rs->fields[1]);
$bluehfarbe = new oxField($rs->fields[2]);
$bluehzeitpunkt = new oxField($rs->fields[3]);
$standort = new oxField($rs->fields[4]);
$rs->MoveNext();
}
}
$this->_aViewData['oxtitle'] = $sArtTitle;
$this->_aViewData['wuchshoehe'] = $wuchshoehe;
$this->_aViewData['bluehfarbe'] = $bluehfarbe;
$this->_aViewData['bluehzeitpunkt'] = $bluehzeitpunkt;
$this->_aViewData['standort'] = $standort;
return 'article_extension.tpl';
}
public function save()
{
parent::save();
$oConfig = $this->getConfig();
$soxId = $this->getEditObjectId();
$aParams = $oConfig->getRequestParameter( "editval" );
// default values
$aParams = $this->addDefaultValues( $aParams );
// null values
if (isset($aParams['oxarticles__oxvat']) && $aParams['oxarticles__oxvat'] === '')
{
$aParams['oxarticles__oxvat'] = null;
}
// varianthandling variants have no steckbrief;-)
$soxparentId = $oConfig->getRequestParameter( "oxparentid");
if ( isset( $soxparentId) && $soxparentId && $soxparentId != "-1")
{
unset( $aParams['oxarticles__oxparentid']);
}
$oArticle = oxNew( "oxarticle");
$oArticle->setLanguage($this->_iEditLang);
if ( $soxId != "-1") {
$oArticle->loadInLang( $this->_iEditLang, $soxId);
}
/*else {
$aParams['oxarticles__oxid'] = null;
$aParams['oxarticles__oxissearch'] = 1;
$aParams['oxarticles__oxstockflag'] = 1;
// shopid
$aParams['oxarticles__oxshopid'] = oxRegistry::getSession()->getVariable( "actshop");
}*/
// resetting counts
//$this->_resetCounts( $aResetIds );
$oArticle->setLanguage(0);
//triming spaces from article title (M:876)
/*if (isset($aParams['oxarticles__oxtitle'])) {
$aParams['oxarticles__oxtitle'] = trim( $aParams['oxarticles__oxtitle'] );
}*/
$oArticle->assign( $aParams );
//$oArticle->setArticleLongDesc( $this->_processLongDesc( $aParams['oxarticles__oxlongdesc'] ) );
$oArticle->setLanguage($this->_iEditLang);
//$oArticle = oxRegistry::get("oxUtilsFile")->processFiles( $oArticle );
$oArticle->save();
// set oxid if inserted
/*if ( $soxId == "-1") {
$sFastCat = $oConfig->getRequestParameter( "art_category");
if ( $sFastCat != "-1") {
$this->addToCategory($sFastCat, $oArticle->getId());
}
}*/
$this->setEditObjectId( $oArticle->getId() );
}
private function oPrint($data)
{
echo "<pre>".print_r($data,true)."</pre>";
}
}
PHP Code:
<?php
$sMetadataVersion = '1.0';
$aModule = array(
'id' => 'article_extension',
'title' => 'Artikel Erweiterung',
'description' => 'Artikel Erweiterung',
'version' => '1.0',
'author' => 'keno',
'extend' => array(),
'files' => array('article_extension' => 'article_extension/article_extension.php')
);
PHP Code:
[{*debug*}]
[{include file="headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign box=" "}]
<form name="myedit" id="myedit" action="[{ $oViewConf->getSelfLink() }]" method="post" onSubmit="return copyLongDesc( '[{$field}]' );" style="padding: 0px;margin: 0px;height:0px;">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="article_extension">
<input type="hidden" name="fnc" value="save">
<input type="hidden" name="oxid" value="[{ $oxid }]">
<input type="hidden" name="voxid" value="[{ $oxid }]">
<input type="hidden" name="editval[article__oxid]" value="[{ $oxid }]">
<div class="center">
<h1>Steckbrief</h1>
<p>[{ $sArtTitle }]</p>
<label>Wuchshöhe</label><br/>
<input type="text" name="editval[oxarticles__wuchshoehe]" value="[{ $wuchshoehe }]" /><br/>
<label>Blühfarbe</label> <br/>
<input type="text" name="editval[oxarticles__bluehfarbe]" value="[{ $bluehfarbe }]" /><br/>
<label>Blühzeitpunkt</label><br/>
<input type="text" name="editval[oxarticles__bluehzeitpunkt]" value="[{ $bluehzeitpunkt }]" /><br/>
<label>Standort</label><br/>
<input type="text" name="editval[oxarticles__standort]" value="[{ $standort }]" /><br/>
</div>
<input type="submit" name="save" value="speichern" />
</form>
Grüße
Keno