Publish Button in Komponente

  • luckynuts
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
24 Dez. 2008 17:09 #19588 von luckynuts
Publish Button in Komponente wurde erstellt von luckynuts
Servus,

ich bin gerade dabe die Komponente von [url:2peyblu5] openbook.galileocomputing.de/joomla15/jo...be552737852c3f1ad6f7 [/url]

auszubauen und diese dann wenn ich einige sachen hinzugefügt hab zum download zu geben.

Die Komponente soll am Ende Turnier/Wettkampf Ergebnisse von diversen Sportarten einfach Managen lassen und diese im Frontend zur verfügung stellen.

Jetzt wollte ich im Backend die Funktion zum publishen bzw. unpublishen einbauen. Der Button usw. steht auch schon, leider hab ich es aber noch nciht geschafft dass diese auch funktionieren.
Ich hab mich vorallem an die Komponente Weblinks orientiert.

Hat einer von euch eine Ahnung was fehlt? Wenn ja, kannst du das vlt ergänzen und im Quelltext kommentieren, damit ich das anschauen kann?
Die Komponente habe ich in einem zip archiv angehängt.

Dankeschön

und schöne Weihnachten euch alle!!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • luckynuts
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
27 Dez. 2008 13:40 #19603 von luckynuts
luckynuts antwortete auf Re: Publish Button in Komponente
kann mir keiner helfen?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
27 Dez. 2008 14:15 #19604 von Tribal6
Tribal6 antwortete auf Re: Publish Button in Komponente
Hi Du.....

...wenn du in deinem Model "pairrank" in den Methode "publish" in der Query selbst den Zusatz:
"..... ' AND ( checked_out = 0 OR ( checked_out = '.(int) $user->get('id').' ) )'" rausnimmst, dann funktionierts wunderbar.

So wie es jetzt ist, checkt die Methode mit dieser ursprünglichen Query, ob der Datensatz ausgecheckt ist, und falls ja, von welchem Benutzer. Das wiederum bedingt, das

- Die Datensätze beim Bearbeiten ausgecheckt werden
- und das dann logischerweise auch entsprechende Felder in der Tabelle der Datensätze vorhanden sind....

...und da müssten deine Datensätze da mindestenst eine Spalte `checked_out` haben, der momentanen Query nach. Da diese Spalte aber nicht vorhanden ist, wird auch nichts zum publishen "gefunden".

Füge entsprechende Spalte in der DB hinzu, oder passe (temporär) die "Publish/Unpublish"-Query an.

Cheers
Roger

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • luckynuts
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
28 Dez. 2008 15:14 #19632 von luckynuts
luckynuts antwortete auf Re: Publish Button in Komponente
cool, freut mich dass mir wer hilft *juhuu*

okay, also so wie ich das verstanden habe ist die spalte "checked_out" welche momentan bei mir noch fehlt, dazu zuständig zu überprüfen und zu kontrollieren, dass keine zwei user gleichzeitig an einem datensatz arbeiten können/dürfen?

Daher wiederum ist es wichtig dass das Datenbankfeld "checked_out" vorhanden ist. (Beispiel wie die Sperre beim bearbeiten von Contents)

Lieg ich damit richtig?


EDIT: Hab die Tabelle mal im phpmyadmin hinzugefügt, funktioniert jetzt wirklich ;) Leider wird mir die Tabelle beim installieren der Komponente noch nciht richtig erzeugt, aber das bekomm ich noch raus.

Danke für die Hilfe!!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
28 Dez. 2008 23:41 #19634 von Tribal6
Tribal6 antwortete auf Re: Publish Button in Komponente
Hi

Für die Erstellung der Tabellen während des Installierens ist entweder eine Query im xml-File deiner Erweiterung zuständig, oder ein externes SQL-File, das du dann in der xml-Datei benennst.

Thema auschecken:

Wenn in deiner Tabelle die Felder `checked_out` (int) und `checked_out_time` (date/time) vorhanden sind, dann kannst du ganz easy die zwei Methoden der geerbten JTable-Klasse dazu verwenden:
Code:
// auschecken: $user =& JFactory::getUser(); $table->load($id); if (!$table->checkout($user->id){ // Fehler beim auschecken }

und zum wieder "einchecken":
Code:
$user =& JFactory::getUser(); $table->load($id); if (!$table->checkin($user->id){ // Fehler beim einchecken }

Es steht dir natürlich auch frei, diese Methoden zu kopieren oder selber eine solche Funktion zu schreiben, um sie z.B. in deinem Model zu verwenden, solltest du bei deiner Erweiterung keine Tabellenklasse verwenden.

okay, also so wie ich das verstanden habe ist die spalte "checked_out" welche momentan bei mir noch fehlt, dazu zuständig zu überprüfen und zu kontrollieren, dass keine zwei user gleichzeitig an einem datensatz arbeiten können/dürfen?

Um das zu überprüfen, kannst du vor dem Laden des Datensatzes die Methode isCheckedOut() der JTable-Klasse verwenden:
(mit oben erwähnten zwei zusätzlichen DB-Feldern)

isCheckedOut (line 688)

Check if an item is checked out

This function can be used as a static function too, when you do so you need to also provide the a value for the $against parameter.

* access: public

boolean isCheckedOut (integer $with, [integer $against = null])

* integer $with: The userid to preform the match with, if an item is checked out by this user the function will return false
* integer $against: The userid to perform the match against when the function is used as a static function.


Die Möglichkeiten, die du mit der (geerbten) Tabellenklasse hast, siehst du hier
--ALTER LINK WURDE ENTFERNT--
Da sind einige nützliche Methoden dabei, die dir das Leben leichter machen.....

Weiterhin viel Spass.

Cheers
Roger

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Moderatoren: Tribal6RePaoDragonlordChris Hoefligerpascaleadiheutschi.ch
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden