Quantcast
Channel: OXID Community Forum
Viewing all articles
Browse latest Browse all 6951

Artikel erweitern, neue Felder, save problem und neuer tab

$
0
0
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.

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 -->
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
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>

modules/article_extension/article_extension.php:

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>";
    }
}

modules/article_extension/metadata.php

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')
);

application/views/admin/tpl/article_extension.tpl

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

Ich würde mich freuen, wenn mir jemand helfen kann.

Grüße
Keno

Viewing all articles
Browse latest Browse all 6951

Trending Articles