Eigene Dateitypen in Netbeans einbinden für die Spracherkennung

Ich muss derzeit mit einem uralten Template-System arbeiten, welches Dateien pro Sprache mit eigener Endung versieht. Dadurch geht mir in Netbeans der Komfort des Syntax-Highlighting und der Auto-Completion für Funktionen leider komplett verloren. Die Datei-Erweiterungen enden auf .cs für Tschechisch, .en für Englisch, .de für Deutsch und so weiter – es gibt auch .tpl und .llt – Dateien in diesem System.

Um diese Dateien nun als PHP-Dateien oder HTML-Dateien (je nach Endung) erkennen zu lassen muss man in Netbeans folgende Schritte befolgen:

Unter Tools –> Options befindet sich im sich öffnenden Dialog der Menüpunkt „Miscellaneous“. Dort im Tab „Files“ lassen sich alle Dateierweiterungen einstellen.

Netbeans: eigene Dateierweiterungen hinzufügen für Syntax-Highlighting: Tools --> Options auswählen
Netbeans: eigene Dateierweiterungen hinzufügen für Syntax-Highlighting: Tools –> Options auswählen

Eigene Dateitypen in Netbeans einbinden für die Spracherkennung weiterlesen

Joomla Layout und View-Layout einer Komponente deaktivieren

Soeben hatte ich das Problem, dass ich die Ausgabe in einer selbst entwickelten Komponente bei Joomla deaktivieren wollte, da ich als Ausgabeformat JSON haben wollte oder gegebenenfalls auch XML oder vielleicht sogar nur Text, plain ASCII. Ich habe schon lange nichts mehr mit Joomla gemacht, musste mich also erstmal wieder an das CMS gewöhnen und hab dabei erfreut festgestellt, dass Joomla ja nach MVC-Architektur aufgebaut ist! Da ich in den letzten größeren Projekten hauptsächlich mit Zend gearbeitet hatte, kam mir das nur entgegen. Aber zum eigentlichen Problem:
Nach Recherche fand ich in der Joomla-Doku über Generating JSON output folgende Zeilen, die helfen sollen:

< ?php
//Daten, die später als JSON zurück- bzw. ausgegeben werden sollen.
$data = array('some data');
 
// Lade das Document-Objekt.
$document =& JFactory::getDocument();
 
// Setze MIME Typ für JSON Ausgabe.
$document->setMimeEncoding('application/json');
 
// Dem Header "sagen", dass es sich um eine Datei handelt, die heruntergeladen werden soll. Dateiendung *.json
JResponse::setHeader('Content-Disposition','attachment;filename="'.$view->getName().'.json"');
 
// Ausgabe der Daten JSON-encoded durch die native PHP-Funktion json_encode.
echo json_encode($data);
?>

Da ich die Daten nicht als Datei benötigt habe, sondern die Ausgabe im Browser sehen wollte, hab ich die Zeile, wo der Header für eine Datei gesetzt wird, auskommentiert. Was ich bei vielen Dokus vermisse, ist der Ort, wo dieser Code eingebaut werden soll. Neulinge wissen meist nicht, wohin der Code gehört. Weiterhin kommt dazu, dass es stets mehrere Lösungen gibt, saubere und unsaubere ;). Für mich klang alles nach View, da es ja um die Ausgabe im Browser ging, daher hab ich den Code in die view.html.php der View der Komponente gepackt. Die Datei liegt unter

com_KOMPONENTENNAME/views/KOMPONENTENNAME/view.html.php

Sie repräsentiert die View der Komponente und lädt das Default-Template unter

com_KOMPONENTENNAME/views/KOMPONENTENNAME/tmpl/default.php

aber das nur am Rande erwähnt. Die Ausgabe jedoch entsprach nicht meinem Wunsch: Es kam der Quelltext vollständig zurück mit html, head, title, meta, body und sonstigen HTML-Tags. Nach weiterer Suche traf ich auf einen Beitrag von 2009 zum Verbergen des Administrator- oder Frontend – Layout – Templates:

JRequest::setVar('tmpl', 'component');

Laut Angabe soll diese Zeile im Controller eingebaut werden. Sie bewirkt, dass das Layout nur den Inhalt der View anzeigt, ohne von einem Template umrahmt bzw. gewrappt zu werden. Ich habe die Zeile direkt hinter die MIME-Anweisung in die View gepackt. Neuladen hat gezeigt, dass jetzt die Menüstruktur der gesamten Seite nicht mehr da war, sondern nur noch der Inhalt der View! … und leider noch die html, head, title, meta- und body-Tags. Zu XML- oder JSON-Output hatte ich nun nichts brauchbares mehr gefunden außer viele Fragen, wie das denn nun geht, also hab ich mein Suchquery geändert und nach Verwendung mit AJAX gesucht, da man dabei meist auch nur einen bestimmten Datensatz abfragen will ohne das Layout oder anderen Quelltext. Ebenso kann die Antwort dort ja auch JSON sein und mit AJAX weiterverarbeitet werden. Und siehe da, ich wurde fündig bei stackoverflow (wo auch sonst) in einer Antwort mit 0 „likes“:

//after $this->display($tpl);
global $mainframe;
$mainframe->close();

Dies war die Lösung. Nun nochmal im Gesamtzusammenhang der Code, der mir JSON als Ausgabe in einer View in der Joomla-Komponente ermöglicht hat:

< ?php
//-- No direct access
defined('_JEXEC') || die('=;)');
jimport('joomla.application.component.view');
class KOMPONENTENNAMEViewKOMPONENTENNAME extends JView
{
    public function display($tpl = null)
    {
		// Get the document object.
		$document =& JFactory::getDocument(); 
		// Set the MIME type for JSON output.
		$document->setMimeEncoding('application/json');
		//Deaktiviert das Template und nutzt nur das Template 
		//der Komponente
		JRequest::setVar('tmpl', 'component');   	
 
		/* Datenverarbeitung aller Daten, beispielsweise ein  
		* Datensatz aus der Datenbank, welcher als Array 
		* zurückgegeben wird. Beispielcode:
		* $model = &$this->getModel();
		* $data = $model->getData();
		* echo json_encode( $data ); 
	    */
 
        parent::display($tpl);
		//Deaktivierung der gesamten Layout-Komponente, 
		//die für html, head, meta und body-Tags zuständig ist
		global $mainframe;
		$mainframe->close();
    }//function
}//class
?>

Der auskommentierte Teil in der Mitte steht für den Part, in welchem die Daten geladen werden, welche später JSON-encoded ausgegeben werden sollen.

Ich hoffe, der Code hilft noch vielen weiteren, die wie ich ewig danach gesucht haben!
Ich bin kein Joomla-Experte und freue mich daher sehr über Verbesserungsvorschläge und Anmerkungen! Die Lösung funktioniert zwar, aber ist sie auch sauber?

PHP-Support für Projekte, die mit Eclipse und SVN ausgecheckt wurden

Checkt man ein Projekt via SVN mit Eclipse aus, hat man das nette Syntax-Highlighting, die Auto-Vervollständigung und das Anzeigen der Dokumentation bei Mouseover über einer Funktion leider nicht mehr.

Das Problem ist jedoch einfach gelöst:
Rechten Mausklick auf das Projekt in der PHP-Ansicht, „Configure –> Add PHP Support“ und schon ist alles wieder wie gewohnt! 598MZJK8US6B

Youtube- und Google-Konten voneinander trennen

Update 20.03.2014

Da hier noch regelmäßig Leute draufklicken aktualisiere ich den Artikel nochmals.
Es gibt die Möglichkeit, Youtube- und Google-Plus-Konten voneinander zu trennen, aber diese gibt es nicht für alle!

Wie finde ich heraus ob das mit meinem Account geht?

Entweder man liest in der Hilfe von Google nach, oder man klickt auf diesen Link:

https://www.youtube.com/account_revert

und guckt, was passiert (Keine Sorge, die Accounts werden nicht gleich getrennt, wenn möglich 🙂 ). Entweder bekommt man die Meldung:

Only channels that were previously disconnected from Google+ are eligible to revert.

oder in Deutsch die unaussagekräftigere Meldung:

Du bist nicht berechtigt, diese Aktion auszuführen.

Youtube- und Google-Konten voneinander trennen weiterlesen