Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: 3ten Status in der Listenübersicht

3ten Status in der Listenübersicht 28 Apr 2019 00:03 #46695

Hallo,
in meiner eigene Komponente gibt es zusätzlich eine view anwesenheit und anwesenheitslist. So weit so gut, die Komponente funktioniert einwandfrei.
Nun möchte der Kunde in der Anwesenheit einen 3ten Status, also unpublished schreibt eine 0, published schreibt eine 1 ind die DB und nun sollte es einen Status geben wo eine 2 (oder eine andetre Zahl) in die DB geschrieben wird und irgendein Icon angezeigt wird, das spielt nicht so eine Rolle.

Bisher konnte ich das so lösen:
Erste Spalte:
<?php echo JHtml::_('grid.id', $i, $row->id); ?>

und dann zum direkten umschalten:
<?php echo JHtml::_('jgrid.published', $row->published, $i, "anwesenheitlist."); ?>

Wie um himmelswillen bringe ich da einen dritten Status rein, wie ihr seht sind meine Kenntnisse doch eher Bescheiden. Könnte mir vorstellen dass man hier vermutlich recht einfach durch ein weiteres klicken den 3ten Status in die Tabelle anwesenheit -> published schreiben kann.

Kann mir jemand helfen, wäre sehr nett?

Beste Grüsse
Beat

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

3ten Status in der Listenübersicht 28 Apr 2019 09:06 #46696

Verschoben nach Programmierung

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Joomla! 3: Professionelle Webentwicklung von David Jardin und Elisa Foltyn - das Standardwerk zu Joomla! 3
Wer nicht über den Anstand verfügt, ein kleines "Thänx" auszusprechen, muss sich nicht wundern, künftig ignoriert zu werden!
Kein Support via PM oder Mail. Entsprechende Anfragen werden ignoriert.

3ten Status in der Listenübersicht 29 Apr 2019 10:35 #46698

Prinzipiell ist 'Status' oder 'state' normalerweise eine Spalte in der Datenbank, mit irgendeinem Wert drinn. Und in einer eigenen Komponente kannst du ja machen was du willst, da kannst du 10 oder 20 Stati haben. Du bist ja schliesslich der Entwickler.

Du scheinst dich aber an Joomla und dessen (JHTML-)Klassen zu halten. Da sind ja fix 4 Stati eingebaut. Neben Publish (1) und Unpublished (0) noch Archiv (2) und Papierkorb (-2). Am einfachsten wird es wohl sein, du nimmst einen der vorhanden und änderst dessen Bezeichnung.

Oder aber du machst einen neuen, und änderst die Funktionalitäten von Ein- und Ausgabe in der Liste/im Formular. Entweder durch eine eigene Funktion in View oder der tmpl/default.php, oder durch überschreiben/erweitern der 'jgrid.published'-Funktion und als eigenes JForm-Formularfeld für das Formular, falls JForm benutzt wird. Denn diese (JHtml und JForm) können ja auch einfach mit eigenen Klassen erweitert werden.

Das ist eben das schöne an Joomla - es geht eigentlich alles und es gibt für jedes Problem meist immer mehrere Lösungen.

Und schliesslich ist es ist deine eigene Erweiterung. Das heisst du kannst PHP. Und damit geht ja schliesslich alles :)
Folgende Benutzer bedankten sich: beetnick

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Man soll das Kind ins Korn werfen solange es noch heiss ist, auch wenn das der eine Tropfen ist, der dem Fass die Krone ins Gesicht schlägt...

3ten Status in der Listenübersicht 30 Apr 2019 17:46 #46710

Herzlichen Dank für Deine Ausführungen. Das wäre genau passend für meine Anforderung, ich brauche eine 2 in der DB also nehme ich Archiv.

<field name="published" type="radio" class="btn-group"
label="JSTATUS"
description="JFIELD_PUBLISHED_DESC"
filter="intval"
size="1"
default="1"

<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>

</field>


Soweit so gut, im edit Layout passt alles und es wird eine 2 in die DB geschrieben.


In der Listenansicht kann ich einen Hacken setzen beim entsprechenden Satz, eine 2 wird in die DB geschrieben und das Archive Icon erscheint.

Klicke ich jedoch auf das Icon wechselt es immer nur zwischen 0 (rotes Kreuz) und 1 (grüner Hacken) beim dritten klick möchte ich den Status Archiv ????



Aufruf in der View:
<?php echo JHtml::_('jgrid.published', $row->published, $i, "anwesenheitlist."); ?>
was mache ich falsch?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

3ten Status in der Listenübersicht 02 Mai 2019 09:00 #46713

Das ist das normale Verhalten, und die ganze 'Action' findet in der
libraries/cms/html/jgrid.php
statt.

Wie gesagt, wenn du dieses Verhalten ändern willst, musst du auch den Code dazu schreiben. Und damit der Code der Listenansicht übersichtlich bleibt, kannst du deinen eigenen JHTML-Helper schreiben:
in einem Ordner Namens
administrator/DEINE-KOMPONENTE/helpers
erstellst du eine Datei Namens 'myhelper.php', und darin eine Klasse Namens 'JHTMLMyhelper' mit einer public static function 'mypublish'.

Wenn du dann in der Listenansicht
<?php echo JHtml::_('myhelper.mypublish', $item->state, $i, 'events.', $canChange, 'cb'); ?>
verwendest, geht das durch deinen eigenen Helper, wo du die Funktionalität von jgrid.php reinkopieren und deinen Wünschen entsprechend anpassen/erweitern kannst.

Obige verwendete Namen kannst du natürlich anpassen, ausser der Klassenname muss den Prefix 'JHTML' haben.

Alles Weitere findest du über Google, dem PHP-Manual und im Joomla-Code selbst.
Denn 'Kunde' und 'eigene Erweiterung' lässt darauf schliessen, dass du für Geld selber was geschrieben hast. Dann musst du auch deine Hausaufgaben selber machen.
Folgende Benutzer bedankten sich: beetnick

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Man soll das Kind ins Korn werfen solange es noch heiss ist, auch wenn das der eine Tropfen ist, der dem Fass die Krone ins Gesicht schlägt...

3ten Status in der Listenübersicht 03 Mai 2019 01:03 #46716

Herzlichen Dank für Deine Unterstützung und du hast natürlich recht ich muss das selber machen und mich da durch kämpfen. Denke meine PHP Kenntnisse sind zu schwach, dennoch bleibe ich dran und muss halt ab und an was fragen.

Habe es genau nach deiner Empfehlung gemacht.
Beim Seitenaufruf dieser view, view=anwesenheitlist kommt der Fehler:

JHtml myhelper not found.
/home/residen1/public_html/rhkristall/libraries/src/HTML/HTMLHelper.php:122

Debug sagt:
hier wird gesucht:
JROOT/libraries/cms/html/myhelper.php -> (aber hier wollen wir ihn ja nicht)

Wo muss ich myhelper.php einbinden?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

3ten Status in der Listenübersicht 03 Mai 2019 08:07 #46717

Sorry, mein Fehler, ich hab was wichtiges vergessen. Nähmlich JHTML den zus. Pfad mitteilen, wo auch noch nach Klassen gesucht werden sollte.
Also, einbinden mittels einem

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/');

irgendwo 'auf dem Weg' zur Ansicht, also in einem Controller, in der view.html.php oder in der tmpl/default.php, falls diese so heisst bei dir :)

Cheers
Roger
Folgende Benutzer bedankten sich: beetnick

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Man soll das Kind ins Korn werfen solange es noch heiss ist, auch wenn das der eine Tropfen ist, der dem Fass die Krone ins Gesicht schlägt...

3ten Status in der Listenübersicht 03 Mai 2019 14:15 #46718

Super jetzt wird mein Helper durchlaufen :-)
Besten Dank
Beat

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1