From a5f5f4aede130e73b9654cd05937182cf60737fb Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Wed, 5 Jun 2024 09:48:56 +0200 Subject: [PATCH] reimplemented module artikeltexte --- phpwf/plugins/class.yui.php | 11 +- www/lib/class.erpapi.php | 27 ++- www/lib/class.remote.php | 21 +- www/pages/artikel.php | 6 +- www/pages/artikeltexte.php | 270 ++++++++++++++++++++++++ www/pages/content/artikeltexte_edit.tpl | 144 +++++++++++++ www/pages/content/artikeltexte_list.tpl | 10 + www/pages/importvorlage.php | 4 +- www/widgets/templates/_gen/artikel.tpl | 6 +- 9 files changed, 465 insertions(+), 34 deletions(-) create mode 100644 www/pages/artikeltexte.php create mode 100644 www/pages/content/artikeltexte_edit.tpl create mode 100644 www/pages/content/artikeltexte_list.tpl diff --git a/phpwf/plugins/class.yui.php b/phpwf/plugins/class.yui.php index d78eb336..c2d2398e 100644 --- a/phpwf/plugins/class.yui.php +++ b/phpwf/plugins/class.yui.php @@ -1921,8 +1921,17 @@ class YUI { } } - $this->app->erp->RunHook('AARLGPositionenSprache', 6, $module, $id, $artikel_id, $sprache, $bezeichnung, $beschreibung); + + // OpenXE artikel_texte + $language = $this->app->erp->GetSpracheBeleg($module,$id); + $sql = "SELECT * FROM artikel_texte WHERE artikel = '".$artikel_id."' AND sprache = '".$language."'"; + $uebersetzung = $this->app->DB->SelectRow($sql); + if ($uebersetzung) { + $bezeichnung = $uebersetzung['name']; + $beschreibung = $uebersetzung['beschreibung']; + } + $bezeichnung = $this->app->DB->real_escape_string($bezeichnung); $beschreibung = $this->app->DB->real_escape_string($beschreibung); diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php index b855b0f3..9ec83a60 100644 --- a/www/lib/class.erpapi.php +++ b/www/lib/class.erpapi.php @@ -31396,15 +31396,15 @@ function Firmendaten($field,$projekt="") $variante_von = $this->app->DB->Select("SELECT variante_von FROM artikel WHERE id = '$artikel' LIMIT 1"); if($variante_von)$beschreibung = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT anabregs_text FROM artikel WHERE id='$variante_von' LIMIT 1")); } - if($this->ModulVorhanden('artikel_texte')){ - if(array_key_exists($belegsprache,$adresssprachen)){ + + if(array_key_exists($belegsprache,$adresssprachen)){ $belegsprache = $adresssprachen[$belegsprache]; - } - $artikelbeschreibung = $this->app->DB->Select("SELECT beschreibung FROM artikel_texte WHERE artikel=$artikel AND sprache='$belegsprache'"); - if($artikelbeschreibung){ - $beschreibung = $artikelbeschreibung; - } } + $artikelbeschreibung = $this->app->DB->Select("SELECT beschreibung FROM artikel_texte WHERE artikel=$artikel AND sprache='$belegsprache'"); + if($artikelbeschreibung){ + $beschreibung = $artikelbeschreibung; + } + } //$vpe = $this->app->DB->Select("SELECT vpe FROM verkaufspreise WHERE id='$verkauf' LIMIT 1"); $sort = $this->app->DB->Select("SELECT MAX(sort) FROM ".$typ."_position WHERE $typ='$id' LIMIT 1"); @@ -31419,20 +31419,19 @@ function Firmendaten($field,$projekt="") if($this->app->DB->Select("SELECT adr.id FROM auftrag auf INNER JOIN adresse adr ON auf.adresse = adr.id AND adr.sprache = 'englisch' WHERE auf.id = '$id' LIMIT 1")) $name = $this->app->DB->Select("SELECT name_en FROM artikel WHERE id = '$artikel'"); if($name === '')$name = $this->app->DB->Select("SELECT name_de FROM artikel WHERE id = '$artikel'"); - if($this->ModulVorhanden('artikel_texte')){ - if(array_key_exists($belegsprache,$adresssprachen)){ + + if(array_key_exists($belegsprache,$adresssprachen)){ $belegsprache = $adresssprachen[$belegsprache]; - } - $artikelbezeichnung = $this->app->DB->Select( + } + $artikelbezeichnung = $this->app->DB->Select( "SELECT name FROM artikel_texte WHERE artikel=$artikel AND sprache='$belegsprache' ORDER BY name <> '' DESC LIMIT 1" - ); - if($artikelbezeichnung){ + ); + if($artikelbezeichnung){ $name = $artikelbezeichnung; - } } } diff --git a/www/lib/class.remote.php b/www/lib/class.remote.php index 0eb67ede..3880b024 100644 --- a/www/lib/class.remote.php +++ b/www/lib/class.remote.php @@ -1177,11 +1177,7 @@ class Remote } $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1"); $artikelexport = $shopexportarr['artikelexport']; - $translationpossible = false; - if($this->app->erp->ModulVorhanden('artikel_texte')) - { - $translationpossible = true; - } + $loadElements = [ 'foreign_numbers' => true, 'article_descriptions' => true, @@ -1811,7 +1807,7 @@ class Remote foreach ($db->yieldAll($query) as $matrixdaten) { $data[$i]['matrix_varianten']['gruppen'][$matrixdaten['gruppe']][$matrixdaten['wert']] = true; - if ($translationpossible && !empty($loadElements['translations'])) { + if (!empty($loadElements['translations'])) { if (empty($gruppenuebersetzung[$matrixdaten['gruppe']])) { $gruppennamen = $this->app->DB->SelectArr("SELECT IF(name_external_from<>'',name_external_from,name_from) AS name_from, @@ -2092,17 +2088,16 @@ class Remote $variantennettopreis = $this->app->erp->GetVerkaufspreis($v['id'], 1, 0); } } - if(!empty($loadElements['translations']) && $this->app->erp->ModulVorhanden('artikel_texte')){ - $sprachen = ['de','en']; - foreach ($sprachen as $sprache){ + $sprachen = ['de','en']; + foreach ($sprachen as $sprache){ $query = sprintf("SELECT * FROM artikel_texte WHERE shop=%d AND sprache='%s' AND artikel=%d AND aktiv=1 LIMIT 1", - $id,strtoupper($sprache),$v['id']); + $id,strtoupper($sprache),$v['id']); $ersetzeStandardbeschreibung = $this->app->DB->SelectRow($query); - if(!empty($ersetzeStandardbeschreibung)){ - $v['name_'.$sprache] = $ersetzeStandardbeschreibung['name']; + if(!empty($ersetzeStandardbeschreibung)) { + $v['name_'.$sprache] = $ersetzeStandardbeschreibung['name']; } - } } + $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $v['id'], $v['pseudolager']); if(is_numeric($v['pseudolager']) && $v['pseudolager'] < 0) { $v['pseudolager'] = 0; diff --git a/www/pages/artikel.php b/www/pages/artikel.php index 34af81c7..4412e536 100644 --- a/www/pages/artikel.php +++ b/www/pages/artikel.php @@ -7333,6 +7333,10 @@ class Artikel extends GenArtikel { $this->app->erp->MenuEintrag('index.php?module=artikel&action=eigenschaften&id='.$id, 'Eigenschaften'); } + $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=list&artikel=$id",'Übersetzung'); + + $this->app->erp->MenuEintrag("index.php?module=artikel&action=baum&id=$id",'Artikelbaum'); + if($rabatt!='1'){ $this->app->erp->MenuEintrag("index.php?module=artikel&action=einkauf&id=$id",'Einkauf'); if($this->app->erp->RechteVorhanden('einkaufabgleich','einkaufapi')) @@ -7393,7 +7397,7 @@ class Artikel extends GenArtikel { } $this->app->erp->MenuEintrag('index.php?module=artikel&action=list','Zurück zur Übersicht'); - $this->app->erp->InsertMenuAfter("index.php?module=artikel&action=baum&id=$id",'Artikelbaum','artikel','eigenschaften'); + } } $this->app->erp->MenuEintrag('index.php?module=artikel&action=create','Neuen Artikel anlegen'); diff --git a/www/pages/artikeltexte.php b/www/pages/artikeltexte.php new file mode 100644 index 00000000..adc4f311 --- /dev/null +++ b/www/pages/artikeltexte.php @@ -0,0 +1,270 @@ +app = $app; + if ($intern) + return; + + $this->app->ActionHandlerInit($this); + $this->app->ActionHandler("list", "artikel_texte_list"); + $this->app->ActionHandler("create", "artikel_texte_edit"); // This automatically adds a "New" button + $this->app->ActionHandler("edit", "artikel_texte_edit"); + $this->app->ActionHandler("delete", "artikel_texte_delete"); + $this->app->DefaultActionHandler("list"); + $this->app->ActionHandlerListen($app); + } + + public function Install() { + /* Fill out manually later */ + } + + static function TableSearch(&$app, $name, $erlaubtevars) { + switch ($name) { + case "artikel_texte_list": + $allowed['artikel_texte_list'] = array('list'); + $heading = array('','','Nummer','Artikel','Sprache', 'Name', 'Kurztext', 'Beschreibung', 'Beschreibung_online', 'Meta title', 'Meta description', 'Meta keywords', 'Katalogartikel', 'Katalogbezeichnung', 'Katalogtext', 'Shop', 'Aktiv', 'Menü'); + $width = array('1%','1%','1%'); // Fill out manually later + + $artikel = $app->User->GetParameter('artikeltexte_artikel'); + + // columns that are aligned right (numbers etc) + // $alignright = array(4,5,6,7,8); + + $findcols = array('a.id','a.id','art.nummer', 'art.name_de', 'a.sprache', 'a.name', 'a.kurztext', 'a.beschreibung', 'a.beschreibung_online', 'a.meta_title', 'a.meta_description', 'a.meta_keywords', 'a.katalogartikel', 'a.katalog_bezeichnung', 'a.katalog_text', 'a.shop', 'a.aktiv'); + $searchsql = array('a.artikel', 'a.sprache', 'a.name', 'a.kurztext', 'a.beschreibung', 'a.beschreibung_online', 'a.meta_title', 'a.meta_description', 'a.meta_keywords', 'a.katalogartikel', 'a.katalog_bezeichnung', 'a.katalog_text', 'a.shop', 'a.aktiv'); + + $defaultorder = 1; + $defaultorderdesc = 0; + $aligncenter = array(); + $alignright = array(); + $numbercols = array(); + $sumcol = array(); + + $dropnbox = "'' AS `open`, CONCAT('') AS `auswahl`"; + +// $moreinfo = true; // Allow drop down details +// $moreinfoaction = "lieferschein"; // specify suffix for minidetail-URL to allow different minidetails +// $mencol = 11; // Set id col for moredata/menu + + $menu = "
" . "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> " . "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " |