Zum Inhalt springen

[Ext:] extJS generiert falschen Pfad zur Source

Erstellt am 8. Mai 2009 · 4 Antworten · letzte Antwort am 8. Dezember 2009

Tags: JavaScript & AJAX, Frage

greenbanana ·

Hallo

Ich wollte die Extensioin extJS in einem meiner Projekte einsetzen. Der jsmanager und extjs (2.2.0) sind installiert und das JS-Framwork wird über:

		// ext:extJS
		tx_extjs::setAdapter('ext');
		tx_extjs::setResource('default');
		tx_extjs::includeLib();
		tx_extjs::setCompressed(TRUE);
		tx_extjs::setLanguage('de');
		tx_extjs::setNoCSS(TRUE);

eingebunden.

Doch leider wird im Header der Pfad nicht richtig generiert. Es wird mir folgendes ausgegeben:

...
<script type="text/javascript" src="typo3conf/ext/extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="typo3conf/ext/extjs/src/ext-all.js"></script>
...

Richtig wäre aber mit dem Pfad zur Version:

...
<script type="text/javascript" src="ext/extjs/versions/2.2/source/ext-all.js">
...

Kennt das Problem jemand?

greenbanana ·

Hallo Community

Bin ich in der Tat der Einzige der sich mit diesem Problem rumschlägt? Kann doch nicht sein 8-)

Ich habe mir zwar in der Zwischenzeit damit abgeholfen, dass ich die ExtJS-Source in das ext-root-verzeichnis kopiert habe. Doch das ist alles andere als sauber.

Falls also jemand eine besser Lösung hat, ich wäre seeehr daran interessiert.

InforMedic ·

Hallo,

ich wollte mich soeben auch an die ExtJs machen, aber dependency error mit jsmanager. Irgendwo im Bugtracker habe ich gelesen das diese extension wohl ab 4.3 obsolete wird.. Wieso wird so eine ext eigentlich in abhängigkeit mit jsmanager entwickelt?!? Oder kann man in besagtem auch sein ExtJS kompilieren?!?

Ich werde jetzt versuchen extjs nach meinen needs zu kompilieren und direkt in meine Ext einbauen.. An dieser Stelle gefragt: kann das künftig eventuell mootools-ähnliche Probleme mit sich beißenden JS geben? ..bin absoluter JS dau..

Gruß

InforMedic ·

Hallo,

habe nun herausgefunden was das Problem war/ist!! ..wollte schon die version in der Klasse hart eincoden, da ist mir aufgefallen das "version" aus der Config ausgewertet wird. Wenn aber nicht in der Config enthalten.....

Folgendes muss ins page template:

Setup.txt

##########################################
# example jsmanager config               #
##########################################
plugin.tx_jsmanager_Executor.libs {
    place = body
    order = extjs
    config {
        extjs {
            loading = 1
            version = max
            variant = minimized
            adapter = ext
            resource = gray
            language = de
            no_css = 0
            plugins = history
            plugins {
                history = EXT:extjs/versions/{$plugin.tx_jsmanager_Executor.version}/plugins/history.js
            }
        }
    }
}
page.1 >
page.1 < plugin.tx_jsmanager_Executor

Man beachte die Variable ($plugin.tx_jsmanager_Executor.version) in der Pfadangabe!!

Die letzten beiden Einträge sorgen dafür, dass das setup der page hinzugefügt wird. Standardmäßig steht da
page.1 = < plugin.tx_jsmanusw.. was ja nicht gehen kann =)

Constants.txt

plugin.tx_jsmanager_Executor.version = 2.2

Wenn das gesetzt ist, werden die Pfade auch entsprechend angegeben.

Wenn mir jetzt noch jemand sagen kann, wie ich mittels dieser API einen kleinen CalendarPicker erzeugen kann?!? <<--- hat sich erledigt, mache ich mit:

Ext.apply(Ext.form.VTypes, {
    daterange : function(val, field) {
        var date = field.parseDate(val);
        if(!date){
            return;
        }
        if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
            var start = Ext.getCmp(field.startDateField);
            start.setMaxValue(date);
            start.validate();
            this.dateRangeMax = date;
        } 
        else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
            var end = Ext.getCmp(field.endDateField);
            end.setMinValue(date);
            end.validate();
            this.dateRangeMin = date;
        }
        /*
         * Always return true since we're only using this vtype to set the
         * min/max allowed values (these are tested for after the vtype test)
         */
        return true;
    },

});

Ext.onReady(function(){
    
    Ext.QuickTips.init();

    Ext.BLANK_IMAGE_URL = '../../typo3conf/ext/extjs/versions/2.2/resources/images/default/s.gif';

    // turn on validation errors beside the field globally
    Ext.form.Field.prototype.msgTarget = 'side';

    var bd = Ext.getBody();

/*
 * ================  Date Range  =======================
 */
    var dr = new Ext.FormPanel({
      labelWidth: 75,
      frame: false,
      bodyStyle:'padding:5px 5px 5px 5px; border: 1px solid #557222;',
      width: 440,
      defaults: {width: 100},
      defaultType: 'datefield',
      items: [{
        fieldLabel: 'Start Date',
        name: 'tx_myext_pi1[Datum1]',
        id: 'tx-myext-form-datum1',
        vtype: 'daterange',
        endDateField: 'tx-myext-form-datum2' // id of the end date field
      },{
        fieldLabel: 'End Date',
        name: 'tx_myext_pi1[Datum2]',
        id: 'tx-myext-form-datum2',
        vtype: 'daterange',
        startDateField: 'tx-myext-form-datum1' // id of the start date field
      }]

    
    });

    dr.render('tx-myext-form-datum-wrap');
});

Beste Grüße