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

Wie verwendet man Module oder Aktion und passt diese an.

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

Beitragvon Koala » 12. Jun 2010, 09: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, 16: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_DOKU :: REX_WIKI :: REX_FAQ :: REX_WIKIPEDIA
Benutzeravatar
Koala
 
Beiträge: 1529
Registriert: 3. Okt 2005, 12:20
Wohnort: Cottbus

Beitragvon Koala » 12. Jun 2010, 16: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_DOKU :: REX_WIKI :: REX_FAQ :: REX_WIKIPEDIA
Benutzeravatar
Koala
 
Beiträge: 1529
Registriert: 3. Okt 2005, 12:20
Wohnort: Cottbus


Zurück zu Module/Aktionen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast