WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 15.12.2019 01:40:38

mrbaseman
Developer

Seiten redaktionell markieren

Hallo,

ich bin auf der Suche nach einem Modul (Backend-Tool?) oder einem Core Feature, das man dazu missbrauchen kann, um Seiten im Backend zu markieren.

Am besten wäre natürlich etwas im Seitenbaum, z.B. ein Stern, den man dort zu einer Seite hinzufügen könnte, wenn die noch überarbeitet werden muss.
Ich dachte schon an ein Droplet [[TODO]], das einfach nichts macht, aber das man dann einfach über die Suche finden kann, aber dieser Hack tut nicht (mehr?).

Man könnte an den Seitentitel einfach einen * dranhängen, den man im Frontend dann wieder per Outputfilter rausfischt, aber in der Suche taucht der dann auch mit auf und wer weiß wo sonst noch überall.

Hat jemand eine bessere Idee, oder zufällig eine fertige Lösung parat, die in diese Richtung geht?

Martin

Offline

Liked by:

stefanek

#2 15.12.2019 09:57:09

florian
Administrator

Re: Seiten redaktionell markieren

Ich weiß nicht, ob Dir das so was nützt:
1) /templates/wbce_flat_theme/patch/functions/renderPageTree.php, Zeile 77 ändern zu

<table class="table page<?=$page['page_id']?>">

2) /templates/wbce_flat_theme/templates/pages.htt, in Zeile 78 einfügen:

[[[markpages]]]

(Achtung: tatsächlich drei eckige Klammern!)

3) Droplet markpages:

$todo = array(2,3,4); // IDs der zu markierenden Seiten
$rv = '<style>';
for ($i=0; $i<sizeof($todo); $i++) {
  $rv.='.page'.$todo[$i].' td';
  if ($i<sizeof($todo)-1) {$rv.=', ';}
}
$rv.=' {background-color:yellow; !important}';
$rv.='</style>';
return $rv;  

Im Droplet dann die IDs der zu bearbeitenden Seiten in der ersten Zeile auflisten. Ergebnis siehe Anhang.
Für andere BE-Themes analog.

Offline

#3 16.12.2019 00:03:59

mrbaseman
Developer

Re: Seiten redaktionell markieren

Danke, Florian. Das hilft mir zwar noch nicht ganz, da man mit dem Ansatz die Liste der Seiten noch in dem Backenddroplet pflegen muss. Gut wäre, wenn ein User ohne Tools Berechtigung direkt im Pagetree (oder in den Seiteneinstellungen) die Seiten markieren könnte. Aber zumindest weiß ich, an welcher Stelle ich ansetzen kann. Ich fürchte, dass ich um eine zusätzliche Tabelle oder um eine weitere Spalte in der pages-Tabelle nicht herum komme.

Offline

#4 16.12.2019 08:00:08

florian
Administrator

Re: Seiten redaktionell markieren

Du könntest die keywords auslesen, und wenn es das Keyword "todo" gibt, wird die Zeile im Tree markiert:
1) page_tree.php, nach $thisref['link'] = $page['link']; ergänzen:

$thisref['keywords'] = $page['keywords'];

2) renderPageTree.php, vor ob_start(); ergänzen:

$todo='';
if (stristr($page['keywords'],'todo')) {
	$todo='todo';
} 

3) und dann Zeile 77

 <table class="table <?=$todo?>">

4) und dann braucht es auch kein Droplet, sondern nur eine Styleanweisung in der pages.htt:

<style>
	table.todo td {background-color:yellow;}
</style>

Offline

#5 16.12.2019 10:03:37

mrbaseman
Developer

Re: Seiten redaktionell markieren

Das ist eine gute Idee. Dann wird der Blick am Schluss auch auf Keywords und Description gelenkt, was sonst oft vergessen wird auszufüllen.

Offline

#6 16.12.2019 16:49:44

stefanek
Developer

Re: Seiten redaktionell markieren

Ich habe etwas dieser Art einmal gemacht. Habe grade alle meine Backups durchgeschaut, es aber leider nicht wieder gefunden. Außer eines Templates, wo ich es (im FE) verwendet habe.

Das ganze war eine Kombination aus 2 Droplets und eines AdminTools (inkl. DB Tabelle).

Die Droplets waren:
[[page_content_status]] und
[[page_has_note]]

Das ganze war so gestaltet, dass ich die Droplets im SM2 Aufruf setzen konnte. Etwa so (im $aItemOpen Parameter des SM2 Aufrufs):

[[page_content_status?PID=[page_id]]][[page_has_note?PID=[page_id]]]

Dann wurde mir mittels CSS und kleinen Icons dargestellt, ob die Seite fertig ist (grüner Punkt) oder noch nicht (roter Punkt).
Die Punkte waren sehr klein. Grad mal 6x6 Pixel.
Wenn zu einer Seite ein Hinweis (Note) hinterlassen wurde, leuchtete ein zusätzliches Icon.

Im Template selbst oberhalb vom <?php page_content(1) ?> Aufruf habe ich die Droplets ebenfalls gesetzt, aber ohne die PageID anzugeben, so etwa:

[[page_content_status]]
[[page_has_note]]

Bei [[page_content_status]] ist dann ein Schalter/Switch erschienen. Wenn man auf ihn geklickt hat, wurde umgeschaltet (von rot auf grün oder umgekehrt)

Anstelle von [[page_has_note]] ist ein kleines Formular mit einer Textarea erschienen. Da konnte man dann Hinweise schreiben und speichern.

Sobald man den Status verändert hat oder einen Hinweis geschrieben hat, konnte man es auch gleich im Menü sehen.
Natürlich war das nur für eingeloggte Editoren sichtbar.

Im Admin Tool konnte man alle Hinweise sehen und man konnte auch die Ausgabe an- und ausstellen (wenn aus, wurde dieser Mechanismus nicht im Frontend ausgegeben).

Leider finde ich weder die dazugehörigen Droplets noch das Admin-Tool.
Das war sehr lange her. Noch vor dem Anbruch von Responsive Templates.
Ich hatte damals ein spezielles Template "Content Designer" mit dem ich die Texte/Contents für Websiten vorbereitet habe ohne zunächst Rücksicht auf das Layout zu nehmen.

Zum Speichern des Zustands und der Notes habe ich eine extra Tabelle angelegt, die über die PageID referenziert wurde (wollte die pages Tabelle nicht aufblähen).
Es war nicht all zu umfänglich, habe davor vielleicht 8-10 Std. gesessen.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#7 18.12.2019 16:51:34

stefanek
Developer

Re: Seiten redaktionell markieren

Klingt das gar nicht interessant für diesen Zweck?

Ich hänge mal ein Screenshot an. So ungefähr konnte ich es wiederherstellen.
Man müsste da noch etwas mit HTML und CSS dran arbeiten, denn jetzt gibt es 3 Stati ("Statuse"): Rot/Gelb/Grün.
Im Menü in geschweiften Klammern dargestellt (R/Y/G).
Zustand kann man gleich im FE ändern.
Das mit den Hinweisen/Notes habe ich nicht mehr nachgebaut. Geht aber relativ einfach.

Ursprünglich wollte ich ein TODO Modul mit ranhängen, mit einer Checkliste von Sachen, die noch zu erledigen sind.
Das ganze ist ziemlich lange her gewesen und ist irgendwie im Sande verlaufen, weil wichtigere Sachen am Projekt vorgezogen werden wollten.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#8 18.12.2019 17:46:45

mrbaseman
Developer

Re: Seiten redaktionell markieren

Die Funktionalität einer TODO-Liste kann man ja mit Hints inzwischen auch machen, allerdings eben auf einer Seite, nicht im Seitenbaum.

Ich habe gestern mit Florians Input gespielt und einen fast fertigen Output-Filter fürs Backend gebaut, der mit der Insert-Klasse jQuery-Code einfügt um die Zeilen zu färben. Den wollte ich  mal noch testen und wenn er tut hier bereitstellen.

Christian, auf deinen Post habe ich nicht reagiert, weil ich davon ausgegangen bin, dass du die Sachen nicht mehr gefunden hast und ich mich mit Florians Ideen schon fast am Ziel gesehen habe. Das ganze aus dem Frontend heraus zu steuern ist im Moment nicht so geschickt. Das Menü ist ziemlich weit verzweigt. Da ist der Seitenbaum, wenn alle Ebenen ausgeklappt sind, übersichtlicher. Aber kann gut sein, dass wir auf diese Möglichkeit auch nochmal zurückkommen. Das hat dann den Charme dass die todos nicht in den Keywords öffentlich drin stehen, und man kann schneller Hinweise hinterlgen und muss nicht zwischen Frontend und Backend hin- und herspringen. Momentan sind in manchen Bereichen noch einfach leere Seiten angelegt.

Ich kann mir auch gut eine Kombination vorstellen: Die Frontend-Edit Funktion zum hinterlegen von Hinweisen und trotzdem die Farbgebung auch als Hintergrund im Pagetree mit Hilfe des Backend-Output Filters.

Offline

#9 18.12.2019 17:56:38

stefanek
Developer

Re: Seiten redaktionell markieren

Hallo Martin,
ja, tatsächlich sind die alten Droplets und Tool irgendwie futsch.
Ich habe aber noch ganz gut auf dem Schirm gehabt, wie ich es damals umgesetzt hatte.
Habe es heute schnell nachgebaut.
Da wir Droplets auch im BE verwenden können, könnte man das ganze auch im Backend, im PageTree, statt im Menü im Frontend anzeigen.
Und den Switch (die 3 Zustände Rot, Gelb, Grün) könnte man in der pages/modify.php der jeweiligen Seiten darstellen.
Der Code der Droplets ist so geschrieben, dass sowohl FE als auch BE berücksicht wird, ich habe es mir aber im BE noch nicht angeschaut.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#10 18.12.2019 19:00:41

mrbaseman
Developer

Re: Seiten redaktionell markieren

Vielleicht wird daraus ja ein nettes neues Feature für eines der nächsten Releases. Ich schau mal, dass ich den Filter nochmal woanders installiert und getestet bekomme.

Christian, bei deiner Lösung braucht man neben den Droplets aber ja schon noch etwas, das die Tabelle in der db anlegt, sprich irgend ein tool oder Snippet. Aber das könnte auch der Filter bei der Installation mit erledigen.

Offline

#11 18.12.2019 19:28:40

stefanek
Developer

Re: Seiten redaktionell markieren

Ja, das wird vom Admin-Tool erledigt.
Im Admin-Tool setzt man auch Settings, ob man das ganze überhaupt verwenden will.

Das mit Outputfiltern statt Droplets zu lösen, wie Du es vorhast, ist auch nicht verkehrt.
Ich habe damals Droplets verwendet und es jetzt wieder mit Droplets umgesetzt.
Für die OpF Variante könnte man die Filter ja auch mit im Admin-Tool mitliefern (oder doch nicht? habe zu lange nicht mit OpFs gearbeitet).

Ich schau mal, dass ich das morgen oder so zusammenpacke.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#12 18.12.2019 23:28:42

mrbaseman
Developer

Re: Seiten redaktionell markieren

Im Anhang das Filter-Plugin. Wenn sich in der Description oder in den Keywords "todo:" befindet, dann wird diese Zeile im Seitenbaum vom Flat Theme gelb hinterlegt.

Offline

#13 18.12.2019 23:36:08

stefanek
Developer

Re: Seiten redaktionell markieren

Ja, das ist cool.

Lässt sich, und wenn ja: wie, ein OpF Plugin vom Modul aus installieren?
Kann auch ein Inline Plugin sein.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#14 19.12.2019 00:00:29

stefanek
Developer

Re: Seiten redaktionell markieren

Im Anhang der erste Durchlauf des Tools.

Dazugehörige Droplets sollten automatisch mitinstalliert werden.
DB Tabellen werden installiert.
Das AdminTool kann verwendet werden, um die Funktion(en) ein-/auszuschalten.

Die Droplets so einbinden wie zuvor schon erwähnt (weiter oben).

Geht auch im PageTree und Backend.
Dazu den PageTree Code mit dem Droplet erweitern, je nach verwendetem Theme etwas anders.
Aber das was ins Menü kommt kommt halt in den PageTree und was auf die Seite kommt kommt im Backend in die pages_modify.htt
Und wichtig, BE Droplets verwenden je 3 eckige Klammern.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#15 19.12.2019 00:25:23

mrbaseman
Developer

Re: Seiten redaktionell markieren

Ja, das Filter-Plugin lässt sich aus dem OpF Dashboard heraus als "Plugin-Filter" installieren.
hier gleich die nächste Version:
- GPL Header eingebaut
- wysiwyg-Abschnitte, die ein Droplet [[todo]] enthalten, werden auch mit gelb hinterlegt

Dein Tool schau ich mir auch noch an und mal sehen, ob wir die beiden Ansätze nicht unter ein Dach bekommen. Der Charme des Backend-Filters ist eben, dass man nicht im Backend-Template vom Core rumfrickeln muss.  Wenn das Backend-Tool mit dazu kommt, dann muss es allerdings ein Modul-Filter sein (quasi ein ganz normales Modul, das noch die filter.php mitbringt und sich bei der Installation im OpF Dashboard registriert).

Offline

#16 19.12.2019 12:57:36

stefanek
Developer

Re: Seiten redaktionell markieren

Hallo Martin,

habe den JS Output etwas verbessert, damit es bei großen PageTrees (viele Seiten) nicht den Code aufbläht.
Der JS-Output wird nur einmal für alle Vorkommen ausgegeben, etwa so:

<script>
		var highlight_page_ids = ["1","2"];
		$.each( highlight_page_ids, function( key, iID ) {
			$("td[class='id']").filter(function() {  
				return $(this).text().trim() === iID; 
				}
			).parent().css('background-color',  'yellow');	
		});
</script>

Hier der PHP Code der Funktion:

function opff_highlight_todos(&$content, $page_id, $section_id, $module, $wb) {
	

	$sSearchClass = "id";
		
	if(DEFAULT_THEME == 'argos_theme_reloaded'){
		$sSearchClass = "page-page-id";
	}
	
       if(opf_find_class($content, $sSearchClass, 'td')){
		global $database;
		$aQueryPageIDs = $database->get_array("SELECT `page_id` FROM `{TP}pages`"
		. " WHERE `keywords` LIKE '%todo:%' OR `description` LIKE '%todo:%'");
		
		$aQueryWysiwigIDs = $database->get_array("SELECT `page_id` FROM `{TP}mod_wysiwyg`"
		. " WHERE `content` LIKE '%[[todo%' OR `text` LIKE '%[[todo%'");
		
		$aHiliteIDs = array_merge($aQueryPageIDs, $aQueryWysiwigIDs);
		if(is_array($aHiliteIDs)){
			$aPageIDs = array_column($aHiliteIDs, 'page_id');
			$jsonPageIDs = (json_encode($aPageIDs));
			$sToJS = "
			var highlight_page_ids = $jsonPageIDs;
			$.each( highlight_page_ids, function( key, iID ) {
				$(\"td[class='".$sSearchClass."']\").filter(function() {  
					return $(this).text().trim() === iID; 
					}
				).parent().css('background-color',  'yellow');	
			});".PHP_EOL;
			I::insertJsCode($sToJS, 'BODY BTM-', 'highligh_todos');
		}
	}
	return(TRUE);
}

Ich verwende das WBCE interne database Objekt.
Die get_array Methode ist neu drin seit 2.8.0 (EDIT: ne, sorry, war im falschen Film. :-D ich meinte bereits seit 1.4.0)

Gruß,
Christian
EDIT:
Man braucht kein preg_match, um nach dem Vorhandensein einer Klasse zu suchen. Man kann bequem die opf_find_class Funktion verwenden. Siehe oben.

Last edited by stefanek (21.12.2019 16:00:23)


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#17 19.12.2019 13:15:24

stefanek
Developer

Re: Seiten redaktionell markieren

mrbaseman wrote:

Ja, das Filter-Plugin lässt sich aus dem OpF Dashboard heraus als "Plugin-Filter" installieren.

Ja, ich frage mich aber, ob es einen guten Weg gibt bei der Installation meines Modules/Tools einen "Inline-Filter" (nicht Plugin) in die DB zu schreiben.
Ich denke es geht unter Verwendung der OpF-Dashboard Funktionen, irgendwie. Werde ich mir demnächst mal anschauen.

Gruß,
Christian

P.S. Habe den PHP Code einen Beitrag höher nochmal ergänzt, damit das Plugin auch mit Argos funktioniert.


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#18 20.12.2019 14:13:03

stefanek
Developer

Re: Seiten redaktionell markieren

Habe mit meinem Modul/Admin-Tool noch weiter experimentiert.
Habe jetzt auch einen OpF Filter mit dabei, der sich bei der Installation des Moduls selbst installiert (war gar nicht so schwer, das OpFDashboard Modul stellt dazu eine Funktion zu Verfügung, zu sehen in der install.php des angehängten Tools).

Ich lasse das Ganze erstmal so liegen, lade es aber hier hoch, damit es nicht verloren geht.
Vielleicht kann man auf dieser Grundlage noch was interessantes machen. (Siehe Screenshot.)
Die Stati lassen sich per Konetxt-Menü ändern, mittels Ajax.

Das Experimentieren daran hat mich weiter gebracht. Kann mir vorstellen, einiges davon in die Entwicklung einfließen zu lassen.

Gruß,
Christian

Last edited by stefanek (21.12.2019 12:15:19)


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

Liked by:

screamindan

#19 20.12.2019 18:51:41

mrbaseman
Developer

Re: Seiten redaktionell markieren

Ich komme gerade nicht dazu, schau es mir aber an, wenn ich etwas Luft habe

Offline

#20 20.12.2019 19:08:29

stefanek
Developer

Re: Seiten redaktionell markieren

Verstehe ich, ist auch grad Weihnachten vor der Tür.

Schöne Grüße,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#21 21.12.2019 12:17:16

stefanek
Developer

Re: Seiten redaktionell markieren

Die Version die ich gestern hochgeladen habe wollte noch nicht ganz installieren, was mir erst aufgefallen war, als ich das Tool auf einer Live Seite installieren wollte.

Im Anhang ist eine Version die korrekt installiert.

Wer mal testen will, Feedback ist immer erwünscht.

Gruß,
Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

Liked by:

giz

#22 21.12.2019 14:03:17

giz
Member

Re: Seiten redaktionell markieren

Interessantes Teil; wo muss ich denn was beim Fraggy Backend Theme einfügen, damit das funktioniert? Aus der Beschreibung werde ich nicht schlau. wink


WBCE 1.5.2 - Fraggy 2.6.6 - PHP 8.0.16 - All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#23 21.12.2019 14:34:34

stefanek
Developer

Re: Seiten redaktionell markieren

Hast Du einen Link zum Fraggy BackendTheme für 1.4.1?
Ich verfolge die Entwicklung von Fraggy nicht...
Ich könnte es mir aber anschauen.

Mit anderen Themes hast Du es zum Laufen bekommen?

Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#24 21.12.2019 14:46:29

stefanek
Developer

Re: Seiten redaktionell markieren

giz wrote:

Interessantes Teil; wo muss ich denn was beim Fraggy Backend Theme einfügen, damit das funktioniert? Aus der Beschreibung werde ich nicht schlau. wink

Die Beschreibung kannst Du ignorieren. Sie betraf die Einbindung fürs FE (mit Droplets).
Die jetzige Version braucht keine Anpassungen, weil es dank @mrbaseman's Ansatz es über einen OutputFilter zu machen, realisiert wurde.

Also einfach installieren und zurück zum PageTree. Dann sollte überall ein roter Punk neben der PAGE_ID erscheinen.

Christian


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#25 21.12.2019 14:53:56

giz
Member

Re: Seiten redaktionell markieren

Danke für's Feedback!
Link zum Fraggy Backend Theme:
https://github.com/Neoflow/Fraggy-Backe … e/releases

Mit anderen Themes hatte ich es nicht versucht...
Ich wollte, dass das eben so wie im Screenshot unter #18 angezeigt wird...
als Nicht-Programmierer verliere ich mich da im Wust der ganzen Dateien.... roll sorry

******************Beitrag hat sich zeitlich überschnitten************

also bei mir wird da nix angezeigt....

Ausschließlich im Flat Backend Theme sind die roten radio buttons vorhanden, im Argos sind sie winzig; dachte erst das sind flecken wink

Last edited by giz (21.12.2019 15:04:47)


WBCE 1.5.2 - Fraggy 2.6.6 - PHP 8.0.16 - All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

Board footer

up