-
typolight excel
hi
stehe wieder mal vor einem problem.
ich möchte im dca bei tl_calendar_events eine neue 'operation' (so wie edit, copy, u.s.w.) hinzufügen.
Diese soll 'excel' heißen.
wenn ich dann darauf klicke, soll ein excel-file erstellt werden mit allen daten aus genau diesem event.
ich dachte mir es würde mit 'button_callback' funktionieren. jedoch kann ich dort meine schon fertig-erstellte php-datei nicht includen.
ich hoffe ihr versteht was ich meine.
kann mir bitte jemand helfen?
-
Das müsste sich in etwa so lösen lassen:
Das DCA-Array musst Du bei den 'operations' um deinen Eintrag erweitern.
Dabei ist wichtig, dass Du 'key=myKey' setzt.
Dann in der config.php musst Du nur noch angeben, welche Klasse/Methode bei diesem Key aufgerufen werden soll.
Ein Beispiel findest Du bei meiner Videobox-Erweiterung für die Settings.
Hoffe das macht den Ablauf klar :)
-
danke für deine schnelle antwort.
es hat soweit gut geklappt.
aber wie kann ich in dieser funktion dann eine php datei includen?
mit include('pfad') funktioniert es nicht.
-
Wie funktioniert nicht? include() funktioniert doch immer :)
Was ist denn der Fehler und wie includest Du? :D
-
das ist der code den ich habe:
PHP-Code:
class Excel_Helpers extends System
{
public function excel()
{
include("excel_report/partner_report.php");
}
}
fehler ist:
Code:
Warning: include(excel_report/partner_report.php) [function.include]: failed to open stream: No such file or directory in /home/www/web393/html/system/modules/calendar/Excel_Helpers.php on line 45
#0 /home/www/web393/html/system/modules/calendar/Excel_Helpers.php(45): __error(2, 'include(excel_r...', '/home/www/web39...', 45, Array)
#1 /home/www/web393/html/system/modules/calendar/Excel_Helpers.php(45): Excel_Helpers::excel()
#2 /home/www/web393/html/system/modules/backend/Backend.php(169): Excel_Helpers->excel(Object(DC_Table), 'tl_calendar_eve...', Array)
#3 /home/www/web393/html/typolight/main.php(99): Backend->getBackendModule('calendar')
#4 /home/www/web393/html/typolight/main.php(295): Main->run()
#5 {main}
-
:) Hab ich mir schon gedacht :D
Was sagt denn die Fehlermeldung und warum denkst Du, ist das so?
(ich könnte Dir auch einfach die Lösung sagen, aber das hat keinen Lerneffekt - darfst mich gerne darauf aufmerksam machen, wenn Dir das nicht passt :) )
PS: Durchsuch doch einfach mal das ganze TL nach "include" und guck Dir das ab. Ist erlaubt :)
-
sehr gut danke!
habe meinen fehler gefunden.
das mit dem include geht ein bisschen anders.
PHP-Code:
include_once(TL_ROOT.'/excel_report/partner_report.php');(
das funktioniert nun soweit.
jetzt habe ich aber 2 weitere probleme.
ich möchte nach klick auf die neue operation nicht auf eine andere seite weitergeleitet werden, sondern auf der gleichen bleiben bzw. automatisch wieder zurückspringen.
wie kann ich der nun erstellten funktion, in der der include-befehl ist die id mitgeben?
PS: mir macht das gar nichts aus wenn ich nur kleine tipps erhalte und dann selbst noch etwas suchen muss. dabei lerne ich es auf jeden fall schneller und merke es mir auch gleich fürs nächste mal!
-
Hmm das was Du da machst sieht so aus, als müsste der Button lediglich eine Exceldatei generieren und zum Download anbieten? Dann brauchst Du doch gar nicht Seite zu wechseln?
Falls nicht, muss man sich eben ein bisschen durch den Code wühlen und gucken, was man da so mitkriegt :D
PHP-Code:
public function myCallback($dc, $strTable, $arrModule)
{
// Also tippe ich darauf, dass Du die id hier kriegst:
echo $dc->id;
}
-
genau so etwas will ich machen.
jedoch suche ich schon lange nach einer möglichkeit die .xls-datei gleich nach dem erstellen auch downloaden zu können.
weißt du vielleicht wie das funktioniert?
wenn ich es über "<meta http-equiv="refresh" content="1;URL=alle.xls">" mache kommt immer die fehlermeldung, 'headers already send by...'.
ich weiß nicht wie ich das ansonsten lösen könnte.
-
Nene Du musst den entsprechenden HTTP Header setzen.
Das machst Du in php mit, wer hätte es gedacht, header() :)
Du kannst z.B. schauen wie TL das beim PDF-Output macht und dann musst Du noch den richtigen Typ für Excel suchen, weiss ich nicht auswendig :)
-
danke für dein unterstützung und hilfe!
jetzt funktioniert alles einwandfrei!
-
-
hi!
ich habe entdeckt das das mit dem excel leider doch noch nicht ganz funktioniert.
Problem ist, das wenn ich mit einem Benutzer eingeloggt bin, der keine admin-rechte hat schreibt mir TL nach Klick auf das feld "Excel erstellen" immer "Es ist ein fehler aufgetreten" aus.
kann mir bitte jemand helfen!
ich brauche das dringend!
danke schon mal
-
Hast Du denn den Systemlog geprüft, in den Settings die "Fehlermeldungen anzeigen" eingeschaltet und nochmal versucht?
-
danke schon mal!
ich habe nur bei den einstellungen "fehlermeldungen anzeigen" aktiviert.
im systemlog habe ich jetzt gerade herausgefunden, das er mir den fehler "Not enough permissions to access calendar ID 9" herausschreibt.
hatte mir auch schon gedacht das der fehlöer etwas mit den berechtigungen zu tun hat.
aber wo kann ich die berechtigungen dann einstellen, das er mir diesen punkt anklicken darf?
in den benutzerrechten habe ich dem benutzer alle möglichen rechte für den calendar gegeben. jedoch hilft das gar nichts!