Eingabemaske für berechtigte Nutzer

  • Hallo Zusammen,


    ich betreibe eine Website, die verschiedene Tabellen aus einer SQL-Datenbank darstellt.

    In der Tabelle befinden sich verschiedene Einträge mit immer den gleichen Attributen. Diese Daten gibt es für mehrere Bereiche.


    Beispiel:


    Tier: Hund

    Größe: 70 cm

    Alter: 2 Jahre


    Tier: Pferd

    Größe: 160 cm

    Alter: 3 Jahre



    Aktuelle Situation:

    Ich habe ein riesen Exceltabelle, in der alle Daten mit den jeweiligen Attributen erfasst sind. Diese verwalte ich selbst.

    Anschließend habe ich ein perl-Skript, mit dem meine Tabellen in die SQL-Datenbank schieb.

    Die Website ist mit joomla aufgebaut. Wenn ein Benutzer aus einem jeweiligen Bereich einen neuen Datensatz einbauen will, ist bereits eine Fabrik List vorhanden, in der er die Möglichkeit hat, einen Datensatz einzutragen. Diesen seh ich dann, und übernehme die Eingaben in meine Exceltabelle, und mit dem nächsten Upload via perl-Skript befindet sich der neue Datensatz dann in der SQL-Datenbank und wird auf der Website mitangezeigt.


    Ja, das ist ziemlich umständlich, deswegen mein Ziel:


    Ich möchte die Exceltabelle abschaffen, und nur noch direkt in der SQL Datenbank arbeiten.

    Die Benutzer sollen die Berechtigung bekommen über meine Website direkt in die Datenbank zu schreiben, sich angelegte Daten anzusehen und zu ändern. Jeder nur für seinen Bereich.


    Ich bin noch ziemlich neu, und hab deswegen meinen zielführenden Ansatz noch nicht gefunden.


    Brauch ich für diese Problematik ein CCK wie Seblod? Oder gibt es eine Möglichkeit, dem Benutzer für seinen Bereich im Frontend eine Maske zu bauen, in der er Dokumente, für die er berechtigt ist abfragen, anlegen und verändern kann?


    Vielen Dank für Eure Denkanstöße und Hilfe.

  • Der empfohlene Weg ist wohl, das CCK Seblod zu benutzen. Geht schneller, als sich eine eigene Komponente zu bauen und ist auch pflegeleichter nach hinten raus.

    Der Nachteil allerdings ist, dass du dich ein wenig in Seblod erst einarbeiten musst. Und falls alles Neuland für dich ist, könnte das Selberprogrammieren eventuell schneller sein. Zumindest am Anfang.

    Vorteile von Seblod sind, dass du eigene Tabellen einbauen kannst, alles übrigens per CSV auch sehr einfach synchronisieren kanns und das Rechtesystem von Joomla nutzen kannst, aber auch eigene Berechtigungen vergeben kannst.



    Axel

  • Vielen Dank für eure Antworten.


    Ich habe mir einige Gedanken dazu gemacht, gerade zum selbst programmieren.


    Mein Gedankengang:


    - Einfach dem Benutzer eine Tabelle anzeigen lassen, in dem er nur seine Dokumente sehen kann. Da muss ich bei der SQL Abfrage den User ja einfach in die where Bedingung schreiben, und schon sieht er nur sein zeug.

    - Dann muss ich es schaffen, dass ich wie einen cursor hab, also der Benutzer sich beispielsweise mit den Pfeiltasten durch die Tabelle klicken kann. Wählt er eines aus, bau ich ein neues Fenster, in dem er den gewählt Eintrag im Detail sehen kann, und die befüllten Zellen müssen dann beschreibbar sein.


    Unten drunter mach ich einfach 3 Buttons:


    Speichern, Abbrechen, Löschen


    Die Buttons müssen dann SQL Befehle wie Update, Delete usw ausführen.


    Was haltet ihr von der Idee?


    Wäre dann reine php/html Programmierung mit ein paar SQL Befehlen.


    Ich weiß nur noch nicht wie ich SQL Inhalte dem Benutzer beschreibbar machen kann und wie ich SQL Befehle hinter Buttons leg.


    Viele Grüße

  • Es gibt viele Wege und jeder wird dir das empfehlen was er selber am besten kann oder anzubieten hat.


    - Eigene Felder von Joomla verwenden

    - Eine eignene Komponente schreiben

    - Ein CCK verwenden

    - Ein fertiges Produkt kaufen das genau das macht was du möchtestm


    So oder so - es kostet entweder Zeit und Nerven oder Geld :)


    Was du dann in jedem Fall brauchst ist ein Script für die Migration der Daten, so dass der aktuelle Bestand ein für alle mal nur einmal und aktuell in der Joomla Datenbannk gespeichert ist. Aber das dürfte für dich kein Problem


    Bei deinem Ansatz tendierst du zu "selbst eine Komponente schreiben". Das ist natürlich spannend und richtig, und wenn du nach den Standards arbeitest dann ist das auch ein richtiger weg. Schau dir doch die Komponenten im Joomla selber an, da siehst du wie es üblicherweise gemacht ist.

    PS. und nd komm zu Joomaday Wien .. dort gibt es Sessions zum Programmieren in Joomla :)

  • Vielen Dank euch beiden für die Tipps.


    Mit

    <code>

    $user = JFactory::getUser();

    </code>


    habe ich schon versucht den Benutzer auszulesen. Jedoch bekomme ich den Error:

    Fatal error: Uncaught Error: Class 'JFactory' not found in...


    Was ja heißt, dass ich dieses JFactory scheinbar noch gar nicht eingebunden habe. Da schau ich jetzt gerade, wie ich das hinbekomme.


    Die Migration der Daten besteht eigentlich schon, da ich bis jetzt immer die Excel Datei mit dem perl Skript in die SQL Datenbank geschoben hab, und so den aktuellsten Datensatz habe.

  • So ich habe ez jetzt eingebunden.



    Jetzt bekomme ich keine Fehlermeldung mehr, nur in der Variable $user_new steht jetzt "Joomla\CMS\User\User" und nicht mein Kürzel mit dem ich mich eingeloggt habe..

  • Ich halte von dieser API-Erzwing-Methode gar nichts, aber das ist halt meine Denke.


    $user_new


    ist ein Objekt mit vielen Eigenschaften und kein String, also kannst auch nicht mit echo ausgeben. Wundert mich eh, dass du keine weiteren Fehlermeldungen, Warnings bekommst.


    print_r(..., true) oder var_dump(...)

  • Okay danke. Naja glaube ich such mir die falschen Daten an dem Punkt:


    object(Joomla\CMS\User\User)#33 (26) { ["isRoot":protected]=> NULL ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL


    Das ist ein Ausschnitt, und bei username sollte ja eigentlich mein Login stehen..

  • Das ist ein Ausschnitt, und bei username sollte ja eigentlich mein Login stehen..

    Wenn du angemeldet bist (im Frontend).


    Deshalb bevorzuge ich auch "meine" Methode bei so "mal eben Scripte" einbinden, weil ich mir keine Gedanken machen muss. Wenn das Modul von Joomla geladen wird, bin ich auch im Framework.


    Als Variation kann man auch einen selbstbenannten Override (statt default.php) des Modules "EIgene Inhalte" verwenden, wo man das Script reintut (und Editor ungenutzt lässt) und wählt den eigenen Override dann unter "Layout" aus. Spart man sich das mit dem Modulstil/modChrome anlegen. Meine Variante war ja auch eher als Tutorial gedacht und zu Zeiten, wo der Module-Button im Editor noch nicht mit Module-IDs gearbeitet haben. Da war halt die einzigartige Positions-Bezeichnung das Günstigere im Vrgl. zum Titel des Moduls, den man ja ggf. auch mal ändert.

  • Okay danke. Na da muss ich mich glaub ich erst einmal tiefer einarbeiten, da bin ich noch ein zu großer Neuling.


    Glaube ich versuche mal die bestehende Fabrik List so zu machen, dass ich die Einträge aus der Datenbank sehen kann.

  • Für alle die das selbe Problem haben. Hab hier ein Skript, dass den eingeloggten User zurück gibt.

  • Weiß jemand in welchem Verzeichnis von Fabrik die Funktionsskripte für die Buttons der Liste (Ansehen, Edit, Delete) liegen?

    Aufgrund der Vermeidung von Fehler, möchte ich die Funktionen hinter den Buttons ändern. Ist dies überhaupt möglich?


    Anstatt löschen, soll der Button z.B. den Eintrag einfach in eine andere Datenbanktabelle schieben.