[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
[gelöst] Artikel per Action verschieben oder Name ändern - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

[gelöst] Artikel per Action verschieben oder Name ändern

12. Jun 2010, 10:19

Hallo

Redaxo 3.2

Ist es möglich per Post-Action einen Artikel in eine andere Kategorie zu verschieben oder, falls das nicht geht, den Artikelnamen zu ändern?

Hintergrund
Newsmeldungen sollen in ein Archiv verschoben werden oder, Alternativ, um den Hinweis ARCHIV im Artikelnamen ergänzt werden, wenn im Artikelmodul ein Flag für die Archivierung gesetzt wurde.

Ein Addon soll dafür nicht eingesetzt werden, wenn es noch einen anderen Weg gibt. Oder was bietet sich noch an?
Es soll für den Redakteur so einfach wie möglich sein. Ein händisches verschieben ist da für ihn schon zu viel, leider :roll:
Zuletzt geändert von Koala am 12. Jun 2010, 17:20, insgesamt 1-mal geändert.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

12. Jun 2010, 17:19

Hab mir dann doch noch etwas zusammenbasteln können.
(siehe auch::Wiki - Einen Artikel verschieben

Anzugeben ist, von welcher Kategorie zu welcher der Artikel verschoben werden soll. Das ganze funktioniert dann auch rückwärts.
Nach dem Verschieben wird automatisch umgeleitet; entweder zum verschobenen Artikel oder in die Kategorie des Artikels.

Im zugehörigen Modul gibt es eine Checkbox über die gesteuert wird, ob der Artikel verschoben werden soll, oder nicht. Der Value ist hier die Nr. 6 ($REX_ACTION['VALUE'][6]).


Action POSTSAVE ADD und EDIT

Code: Alles auswählen

<?php
/******* EINSTELLUNGEN BEGIN *******/
// Kategorie aus der der Artikel verschoben werden soll
$category_id_ist = 1;

// Kategorie in der der Artikel eingefügt werden soll
$category_id_soll = 69;

// wohin soll umgeleitet werden
// 1 = direkt zum Artikel
// 2 = zur Kategorie
$umleitung = 1;

/******* EINSTELLUNGEN ENDE *******/



$_clang = $REX['CUR_CLANG'];
$_article_id = array_keys($REX['ART']);
$_article_id = $_article_id[0];

$IST_status = $REX['ART'][$_article_id]['status'][0];

$path = $REX['ART'][$_article_id]['path'][0];
$artPath = explode('|', $path);
if (in_array($category_id_ist, $artPath)) {
  $gehezu_categorie = $category_id_soll;
} else {
  $gehezu_categorie = $category_id_ist;
}

$statusAnpassen = false;
if ($REX_ACTION['VALUE'][6] == 1 and in_array($category_id_ist, $artPath)) {
  //echo 'ab ins Archiv';
  if (rex_moveArticle($_article_id, $category_id_ist, $category_id_soll)) {
    $statusAnpassen = true;
  } else {
    $REX_ACTION['SAVE'] = true;
    $REX_ACTION['MSG'] = "Es trat ein Fehler auf.<br />Der Artikel konnte nicht in das Archiv verschoben werden.<br />Bitte wenden sie sich an ihren Administrator.";
  }
} else if ($REX_ACTION['VALUE'][6] == 0 and in_array($category_id_soll, $artPath)) {
  //  echo 'zurueck ins Main';
  if (rex_moveArticle($_article_id, $category_id_soll, $category_id_ist)) {
    $statusAnpassen = true;
  } else {
    $REX_ACTION['SAVE'] = true;
    $REX_ACTION['MSG'] = "Es trat ein Fehler auf.<br />Der Artikel konnte nicht verschoben werden.<br />Bitte wenden sie sich an ihren Administrator.";
  }
}

// wenn Artikel verschoben werden konnte, setze den Status 
// auf letzten Stand und gehe zum Artikel
if ($statusAnpassen) {
  $EA = new sql;
  //$EA->debugsql = true;
  $EA->setTable($REX['TABLE_PREFIX']."article");
  $EA->where("id='$_article_id' and clang=$_clang");
  $EA->setValue("status", $IST_status);
  $EA->setValue("updatedate", time());
  $EA->setValue("updateuser", $REX_USER->getValue("login"));
  $EA->update();
  rex_generateArticle($_article_id);

  $host  = $_SERVER['HTTP_HOST'];
  $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
  if ($umleitung == 1) {
    header ('Location: http://'.$host.$uri.'/index.php?page=content&article_id='.$_article_id.'&category_id='.$gehezu_categorie.'&mode=edit&clang='.$_clang.'');
  } else {
    header ('Location: http://'.$host.$uri.'/index.php?page=structure&category_id='.$gehezu_categorie.'&clang='.$_clang.'');
  }
  exit;
}


?>
Gehts eleganter/einfacher?
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Zurück zu „Allgemeines [R3]“