[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
updateuser im Backend sichtbar machen? - 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/
greyhound
Beiträge: 72
Registriert: 30. Mai 2011, 12:52

updateuser im Backend sichtbar machen?

11. Nov 2015, 11:41

Hallo zusammen,

beim aktuellen Projekt mit Redaxo 4.6.1 gibt es mehrere Redakteure. Nun soll im Backend möglichst pro Slice angezeigt werden, welcher Benutzer wann letztmalig Änderungen vorgenommen hat. Die Daten liegen ja in rex_article_slice vor, gibt es bereits eine Lösung/ein AddOn, was dies ermöglicht? Meine bisherige Suche hat nichts dazu ergeben.

Es grüßt
greyhound

greyhound
Beiträge: 72
Registriert: 30. Mai 2011, 12:52

Re: updateuser im Backend sichtbar machen?

11. Nov 2015, 12:29

Mittlerweile habe ich es hinbekommen, daß per EP "ART_SLICE_MENU" die Information im Slice Menü ausgegeben wird:

Code: Alles auswählen

if ($REX['REDAXO'])
require $REX['INCLUDE_PATH'].'/addons/'.$mypage.'/functions/functions.inc.php';

rex_register_extension('ART_SLICE_MENU', 'EPArtSliceMenu');
in einem bereits bestehenden AddOn sowie folgender Funktion:

Code: Alles auswählen

function EPArtSliceMenu($params){
	if ($GLOBALS['REX']['REDAXO']){
		if ($params['function']!='edit'){
			$slice=OOArticleSlice::getArticleSliceById($params['slice_id']);

            array_splice($params['subject'], 0, 0,$slice->getValue('updateuser').' | '.strftime('%d.%m.%y %H:%M',$slice->getValue('updatedate')).' ');

			return $params['subject'];
		}
	}
}
Somit stehen die Angaben dann an erster Stelle, vor dem "Editieren"-Link

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: updateuser im Backend sichtbar machen?

11. Nov 2015, 12:51

Ein Use Case für ein Plugin für das Backend Utilities Addon.
Also falst du net weisst wohin mit dem Code ;)

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

17. Nov 2015, 09:57

greyhound hat geschrieben:Mittlerweile habe ich es hinbekommen, daß per EP "ART_SLICE_MENU" die Information im Slice Menü ausgegeben wird:

Code: Alles auswählen

if ($REX['REDAXO'])
require $REX['INCLUDE_PATH'].'/addons/'.$mypage.'/functions/functions.inc.php';

rex_register_extension('ART_SLICE_MENU', 'EPArtSliceMenu');
in einem bereits bestehenden AddOn sowie folgender Funktion:

Code: Alles auswählen

function EPArtSliceMenu($params){
	if ($GLOBALS['REX']['REDAXO']){
		if ($params['function']!='edit'){
			$slice=OOArticleSlice::getArticleSliceById($params['slice_id']);

            array_splice($params['subject'], 0, 0,$slice->getValue('updateuser').' | '.strftime('%d.%m.%y %H:%M',$slice->getValue('updatedate')).' ');

			return $params['subject'];
		}
	}
}
Somit stehen die Angaben dann an erster Stelle, vor dem "Editieren"-Link
Schönes Ding, könnte ich ab und an auch mal gebrauchen. Danke fürs Teilen!
Da gibts nur ein Problem:
Ich habe wie beschrieben die Funktion im AddOn hinterlegt (AddOn-Ordner/functions/functions.inc.php) und dann im Ausgabemodul den Extension-Point registriert. Und ich sehe absolut keine Veränderung zu vorher. Es wirft keinen Fehler, aber es zeigt die gewünschte Information auch nirgendwo etwas zusätzlich an :(

Ich habe das AddOn "SliceStatus" noch nebenbei am Laufen, könnte das ein Problem sein?
Getestet mit Redaxo 4.6.2.

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: updateuser im Backend sichtbar machen?

17. Nov 2015, 10:43

Prüf erstmal ob deine Funktion überhaupt aufgerufen wird, z.B. in dem du ein echo und dein ein exit; reinsetzt gleich zu beginn der funktion.

greyhound
Beiträge: 72
Registriert: 30. Mai 2011, 12:52

Re: updateuser im Backend sichtbar machen?

18. Nov 2015, 17:16

dpf_dd hat geschrieben:Ich habe wie beschrieben die Funktion im AddOn hinterlegt (AddOn-Ordner/functions/functions.inc.php) und dann im Ausgabemodul den Extension-Point registriert.
Was genau meinst Du mit "Ausgabemodul"? Den EP registriere ich in der config.inc.php meines AddOns.

Ansonsten, wie RexDude schon sagt, teste mal aus, ob die functions-Datei generell und die Funktion im Besonderen eingebunden und aufgerufen werden.

Es grüßt
greyhound

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

18. Nov 2015, 20:50

greyhound hat geschrieben:
dpf_dd hat geschrieben:Ich habe wie beschrieben die Funktion im AddOn hinterlegt (AddOn-Ordner/functions/functions.inc.php) und dann im Ausgabemodul den Extension-Point registriert.
Was genau meinst Du mit "Ausgabemodul"? Den EP registriere ich in der config.inc.php meines AddOns.

Ansonsten, wie RexDude schon sagt, teste mal aus, ob die functions-Datei generell und die Funktion im Besonderen eingebunden und aufgerufen werden.

Es grüßt
greyhound
Erstmal danke für deine Antwort. Ich habe mir das jetzt alles nochmal angeschaut und kann den Fehler eingrenzen:
In der "Liveversion" klappt es, in der "Arbeitsversion" nicht... (Ich bnutze das AddOn "versions")

Es wäre also geil, wenn man in der config.php noch eine Abfrage hätte, ob man sich in der Live- oder Arbeitsversion befindet. In "versions" ist aber nichts dokumentiert? Gibts da eine Möglichkeit, die ich nur noch nicht kenne? Wäre ja prinzipiell auch für andere Dinge praktikabel, wenn ich per Variable zwischen Live- und Arbeitsversion unterscheiden könnte... :?:

EDIT:
Mittlerweile habe ich herausgefunden, dass man das abfragen kann:

Code: Alles auswählen

$version_id = rex_request("rex_set_version");
# => Liveversion == 0 - Arbeitsversion == 1 
Ich habe dann die if-Schleife der Funktion erweitert (... && $version_id != 1)
Resultat: Ich bekomme die Anzeige in der LIVE-Version - in der Arbeitsversion wird nichts hinzugefügt. Klappt aber nur 1x - sobald ich nach vorgenommenen z.B: Seiteneinstellungen auf "Inhalt" klicke, um wieder zur Modulanischt zu wechseln => alles ist wieder weg. Ich wechsle dann in die Liveversion und kopiere das Zeuch in die Arbeitsversion => alles wieder da...

Sehr strange das Ganze o.O

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

19. Dez 2015, 12:57

Sorry muss das mal pushen:

Was ist zu tun, um deinen o.g. Code mit dem AddOn "versions" kompatibel zu machen. Ich suche hier immernoch nach einer Lösung... *liebguck* 8)

greyhound
Beiträge: 72
Registriert: 30. Mai 2011, 12:52

Re: updateuser im Backend sichtbar machen?

20. Dez 2015, 22:07

dpf_dd hat geschrieben:Was ist zu tun, um deinen o.g. Code mit dem AddOn "versions" kompatibel zu machen. Ich suche hier immernoch nach einer Lösung... *liebguck* 8)
Habe mir das auf einer Demoinstanz mit Versions vorgenommen, so sollte es gehen:

Code: Alles auswählen

function EPArtSliceMenu($params){
	if ($GLOBALS['REX']['REDAXO']){
		if ($params['function']!='edit'){
			$version=rex_request("rex_set_version");

			if ($version==1 || $version=='')
			$slice=OOArticleSlice::getArticleSliceById($params['slice_id'],$params['clang'],1);
			else				
			$slice=OOArticleSlice::getArticleSliceById($params['slice_id']);

			array_splice($params['subject'], 0, 0,$slice->getValue('updateuser').' | '.strftime('%d.%m.%y %H:%M',$slice->getValue('updatedate')).' ');

			return $params['subject'];
		}
	}
}

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

20. Dez 2015, 23:24

Ja ist denn heut scho' Weihnachten? 8) 8) 8)

Eine kleine Änderung noch, aber das ist triial und sollte sofort auffallen... ;)

Code: Alles auswählen

# nicht ganz korrekt
if ($version==1 || $version=='')

# so muss es aussehen
if ($version==1 || $version=='0') 
Vielen lieben Dank Greyhound - das funktioniert tadellos :)

EDIT: Irgendwie flutscht es noch nicht. Manchmal hängt es nach wie vor in der LIVE-Version... Hier mal ein Auszug aus der Error-Log:

Code: Alles auswählen

[fcgid:warn] [pid 15811] mod_fcgid: stderr: PHP Fatal error:  Call to a member function getValue() on a non-object in functions.inc.php on line 12, referer: 
Das ist die Zeile beginnend mit array_splice...

Muss jetzt erstmal schlafen und bin dann erst Mittwoch wieder da -.- Dennoch danke :)

greyhound
Beiträge: 72
Registriert: 30. Mai 2011, 12:52

Re: updateuser im Backend sichtbar machen?

21. Dez 2015, 08:53

dpf_dd hat geschrieben:Eine kleine Änderung noch, aber das ist triial und sollte sofort auffallen... ;)
Das hatte ich schon bewusst so gesetzt, da es bei mir nur so funktioniert hat.. Öffnet man den Artikel über die Struktur direkt, ist die Arbeitsversion sichtbar, jedoch liefert rex_request("rex_set_version") in dem Moment einen leeren String zurück. Wechselt man dann die Version, wird entweder 1 oder 0 zurückgegeben.

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

24. Dez 2015, 00:41

Ah, verstehe. Klar, leuchtet jetzt auch ein. GIbt aber trotzdem noch ein Problem: Wenn ich in der Live-Version den ctype wechsle, dann verschwinden meine Moduleblöcke, die da eigentlich angezeigt werden sollten. Passiert aber nur in der Liverversion. Beim ersten Laden ist alles da, aber beim Surfen durch die ctypes ist dann finito :(

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

4. Jan 2016, 16:25

OK, neues Jahr, neues Glück... Das Problem ist aktuell noch offen :(
Folgende Fehleranalyse bisher... Weiter komme ich leider nicht, da brauche ich Hilfe...

Code: Alles auswählen

$version = rex_request("rex_set_version");

/*
Probleme:
Wird ein Artikel im Backend aufgerufen, dann lädt die Standardansicht, also die Arbeitsversion
=> $version = "" (weder 0 noch 1)
Stelle ich nun auf "Liverversion" => Seite lädt neu, Liveversion jetzt eingestellt
=> $version = "1" (so wie es sein muss)
Stelle ich nun wieder auf "Arbeitsversion" => Seite lädt neu, Arbeitsversion jetzt eingestellt
=> $version = "0" (so wie es sein muss)
Egal ob Live- oder Arbeitsversion, folgendes passiert beim Wechsel der Ctypes
=> $version = "" (weder 0 noch 1)
*/
Kurzum: Bei Verwendung von Ctypes gibt es scheinbar keinen Weg, jederzeit absolut eindeutig festzustellen, ob man sich nun in der Live- oder Arbeitsversion befindet. Ich mags kaum glauben, aber rex_request("rex_set_version") scheint nicht der Weisheit letzter Schuss zu sein...

Wer hat noch zwei Cent zum Einwerfen? :roll:

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: updateuser im Backend sichtbar machen?

5. Jan 2016, 09:22

Hej,

du verwendest rex_request verkehrt. Da fehlt der zweite Parameter und um es übersichtlicher zu halten auch der Default-Wert.

$version = rex_request('rex_set_version', 'bool', 0);

Damit fällt dieses Problem schon mal raus.
/*
Probleme:
Wird ein Artikel im Backend aufgerufen, dann lädt die Standardansicht, also die Arbeitsversion
=> $version = "" (weder 0 noch 1)
*/
vg Thomas

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

5. Jan 2016, 09:44

Danke Thomas, das stimmt natürlich. Dafür bekomme ich jetzt keinen Wert, mehr wenn ich auf Liveversion umschalte. Also völlig egal wie ich rex_request("rex_set_version") verwende - bisher kenne ich keine Lösung, die mir IMMER eine 0 bzw. 1 ausgibt... Und ich vermute deswegen, dass es auch keine Lösung gibt :(

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: updateuser im Backend sichtbar machen?

5. Jan 2016, 13:59

$version sollte doch jetzt immer 1 oder 0 sein.

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: updateuser im Backend sichtbar machen?

5. Jan 2016, 15:09

Thomas.Blum hat geschrieben:$version sollte doch jetzt immer 1 oder 0 sein.
Also ich habe das exakt so eingefügt wie von dir geschrieben - das Problem ist einfach das er jetzt völligen Schwachsinn fabriziert :roll: :roll: :roll:

Code: Alles auswählen

echo 'Version: '.rex_request("rex_set_version","bool", 0); 
In der Arbeitsversion bekomme ich als Rückgabe "1" - also korrekt.
Aber jetzt wirds lustig: Wenn ich in der Arbeitsversion dann zwischen meinen beiden Ctypes wechsle, dann wird mir eine "0" zurückgegeben - also falsch. Ist auch logisch. Normal würde er einen Leerwert zurückgeben ("") - aber weil 0 als default definiert ist, zeigt es eben "0" an.

Ich kann aber eben nicht auf Live- und Arbeitsversion prüfen, wenn ich mal eine "1" und mal eine "0" (oder gar nichts bekomme)...

Wie gesagt. Sobald die Ctypes ins Spiel kommen ists scheinbar vorbei mit rex_request("rex_set_version") - und genau das ist mein Problem. Ich brauche nur eine Scheißvariable, mit der ich auf die Version abfragen kann - keine Ahnung warum ich der einzige bin der das nicht hinbekommt...!?

Kannst du mal bitte versuchen das zu reproduzieren? Also ein leeres Modul nur mit o.g. Codezeile als Ausgabe? Ein Template mit 2 Ctypes haste doch sicherlich iwo rumliegen... :D

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: updateuser im Backend sichtbar machen?

5. Jan 2016, 16:00

Gib doch einfach einen Zugang. Hab grad keine Site mit version online.

Zurück zu „Allgemeines [R4]“