Extension: Javascript generieren - Objekt

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    05. 05. 2011, 12:23

    Hallo,
    ich suche nach einer Möglichkeit Javascript in meiner Extension zu generieren (in temp. Dateien).

    Was ich machen möchte...
    Alle Datensätze aus der Datenbank auslesen und jeden als Javascript-Objekt speichern.

    Ist das möglich, habt ihr vllt. ein kleines Beispiel für mich?

    Viele Grüße,
    Jakob


  • 1
  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    05. 05. 2011, 14:34

    Das ist möglich, viel einfacher wäre es aber, wenn du deine Daten über ein eid-Skript als JSON ausgibst und dann per JavaScript entsprechend über Ajax abrufst.

    http://www.aemka.de/

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    06. 05. 2011, 15:06

    Hallo,
    danke für deinen Tipp aemka.
    Gibt es noch eine andere Möglichkeit?

    Ich habe es gerade so versucht...

    1. $GLOBALS['TSFE']->setJS($this->extKey,'alert("'.$rowE['name'].' " ) ; ');

    ...das funktioniert auch, aber nur mit einer anweisung. Wenn ich eine zweite darunter mache wird die erste überschrieben.

    Gibt es eine andere Funktion die wie "setJS" arbeitet, bei der ich mehr Code schreiben kann?

    [b]Ich möchte an mehreren Stellen in meiner Extension JS-Code aufrufen.[/b]

    Grüße,
    Jakob

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    06. 05. 2011, 16:10

    Also jetzt mach ich es so das ich den JavaScript-Code in einen eigenen Subpart schreibe.
    Kommt mir aber ziemlich "dirty" vor...

    Grüße,
    Jakob

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    09. 05. 2011, 08:56

    [quote="aemka"]
    Das ist möglich, viel einfacher wäre es aber, wenn du deine Daten über ein eid-Skript als JSON ausgibst und dann per JavaScript entsprechend über Ajax abrufst.
    [/quote]

    Scheint wircklich viel einfacher zu sein als meine Versuche...

    Hat jemand vllt. eine Seite für mich, oder eine Extension, wo ich Beispiele zu eID-Skript/Ajax finden kann?

    Grüße,
    Jakob

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    09. 05. 2011, 11:52

    Google mal nach typo3 eid json.

    Gleich der erste Treffer:
    http://www.interaktionsdesigner.de/2009/01/04/asynchrone-datenubertragung-zwischen-typo3-und-jquery/

    http://www.aemka.de/

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    09. 05. 2011, 13:10

    Danke aemka!
    Wie man richtig googelt muss ich wohl noch lernen...

    Grüße und nen schönen Tag,
    Jakob

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    10. 05. 2011, 14:47

    So ganz steig ich da nicht durch, vllt. könnt ihr mir nochmal helfen.

    Ich habe jetzt folgendes zusammengeschrieben...
    test_eid.php

    1. if(!defined ('PATH_typo3conf')) {
    2. die('Access denied.');
    3. }
    4.  
    5. require_once(PATH_tslib.'class.tslib_pibase.php');
    6.  
    7. class test_eID extends tslib_pibase {
    8. var $extKey = 'tx_tptest';
    9.  
    10. function main() {
    11. $TSFE = tslib_eidtools::initFeUser();
    12. tslib_eidtools::connectDB();
    13.  
    14. $content = array();
    15.  
    16. echo 'username: '.$GLOBALS['TSFE']->fe_user->user['username'].'<br /><br />';
    17.  
    18. require_once('typo3conf/ext/tp_test/pi1/test_eID.php');
    19. $obj = t3lib_div::makeInstance("test_eID" );
    20.  
    21. $a = $obj->getAnswer();
    22.  
    23. echo json_encode($a);
    24. }
    25.  
    26. function getAnswer() {
    27. $resK = $GLOBALS['TYPO3_DB']->exec_SELECTquery('name,titel','tx_tptest','','','','');
    28. while($rowK = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($resK))
    29. {
    30. $test = array("name" => $rowK['name'], "titel" => $rowK['titel']);
    31. $content[] = $test;
    32. }
    33. return $content;
    34. }
    35. }
    36.  
    37. $output = t3lib_div::makeInstance('test_eID');
    38. $output->main();

    ext_localconf-php

    1. $TYPO3_CONF_VARS['FE']['eID_include']['test_eID'] = 'EXT:tp_test/pi1/test_eID.php';

    Ergebnis...
    HTML-Seite mit leeren Header
    Body: [{"name":"Jakob","titel":"TestEintrag"},{"name":null,"titel":null}]

    [b]Wie binde ich jetzt für die Weiterverarbeitung jQuery ein?[/b]

    Das eID kann ich ja überall einfach über einen Parameter aufrufen.
    [b]Kann ich dem eID sagen das es nur kommen soll wenn die Extension-Seite aufgerufen wird und ein bestimmter Benutzer eingeloggt ist?[/b]
    [b]Ein Template gibt es bei eID nicht, oder?[/b]

    Viele Grüße,
    Jakob

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    10. 05. 2011, 17:52

    Kann doch nicht so schwer sein...

    Über TS geht es ja nicht, weil er mir ja alles raushaut.
    Bin grad ziemlich am verzweifeln und google liefert mir auch nichts brauchbares. -.-

    Viele Grüße,
    Jakob

  • BlackPixel BlackPixe...
    Sternenflotten-Admiral
    0 x
    230 Beiträge
    3 Hilfreiche Beiträge
    05. 07. 2011, 11:56

    Ist auch nicht so schwer.

    In Deinem Extensiontemplate im TS einfach eine neue typenum erstellen und den page type auf json stellen. Denn nur wenn der Header als JSON gesendet wird erzeugt jQuery dir aus der Rückgabe objekte. Ansonsten stirbt jQuery mit not success:

    1. json = PAGE
    2. json {
    3. typeNum=1284618330
    4. 10 = USER_INT
    5. 10 {
    6. userFunc = tx_extbase_dispatcher->dispatch
    7. ...
    8.  
    9. }
    10. config {
    11. disableAllHeaderCode = 1
    12. additionalHeaders = Content-type:application/json|Cache-Control: no-cache, must-revalidate, max-age=0|Expires: Mon, 2 Jan 2006 01:00:00 GMT|Pragma: no-cache
    13. xhtml_cleaning = 0
    14. admPanel = 0
    15. no_cache = 1
    16. }
    17. }

    und in deinem PHP dann einfach hingehen, alle daten aus der db afragen, in ein array packen und aus dem array json machen (json_encode($obj)).

    Gruß Manfred

    TYPO3 Slider Revolution: https://www.rutschmann.biz/extensions/typo3-slider-revolution/
    TYPO3 Layerslider Extension: http://www.rutschmann.biz/extensions/typo3-layerslider/
    TYPO3 Responsive Flipbook Extension: http://www.rutschmann.biz/extensions/typo3-responsive-flipbook/
    TYPO3 PayPal Download Checkout: http://www.rutschmann.biz/extensions/typo3-paypal-download/

    http://www.rutschmann.biz/
    ----------------------------------------------------
    Extbase, Fluid, HTML & CSS Development

  • 1