Donnerstag, August 30, 2007

Mein Video Blog

http://nickiplorer.schaerwebdesign.ch/site/user/1/blog

:) eine entstehende Video Community. Interesse? Dann einfach anmelden und mal ausprobieren...

Montag, August 20, 2007

Ein Leben ohne Internet?

Durch den Umzug hat sich der Internetanschluss ein wenig verspätet... das Leben steht praktisch still. Ich könnte eigentlich auch Ferien machen. Wenn mans nicht hat, merkt man wie sehr man davon abhängig ist...

Freitag, August 10, 2007

Deutsche Drupal Entwickler



Drupal ist am Kommen. Im deutschsprachigen Raum gibt es jedoch noch nicht viele Entwickler. Hier eine kleine Liste

Donnerstag, August 09, 2007

Kleines praktisches Firefox Addon/Erweiterung

Es gibt sie noch, die kleinen, praktischen, platzsparenden Firefox Addons. Über so eines bin ich heute gerade gestoplert.
Das Addon zeigt unten in der Statusliste an, wie lange die Seite zum laden hatte, und wie viele bytes effektiv geladen wurden. Da ich im Moment gerade eine Plattform am entwickeln bin, welche möglichst platzsparend sein muss, kommt bei mir die Anzeige der geladenen Bytes gerade wie gerufen, da ich so sofort sehe, wie gross die effektiv geladenen bytes (natürlich excl. dem Inhalt, welcher schon im Cache ist) sind.
Hier der Link zum Addon:
Life of request info

Mittwoch, August 08, 2007

Autocomplete für Drupal mit JQuery Teil 2

Wie ich im gestrigen Post berichtet habe, lässt sich mit Drupal ziemlich einfach eine autocomplete Funktionalität bauen... es geht sogar noch einfacher. Drupal besitzt von Haus auf bereits die entsprechende Funktionalität. Es muss nur noch folgendes gemacht werden:

Die Schnittstelle im hook_menu festlegen:

$items[] = array(
'path' => 'autocomplete',
'callback' => 'autocomplete',
'access' => user_access('access autocomplete'),
'callback arguments' => array('in' => arg(2)),
'type' => MENU_CALLBACK);

Wobei mit callback arguments der String vom Autocomplete Feld kommt.

Danach muss die entsprechende callback Funktion definiert werden:

function autocomplete($in){
...
while($row_3 = db_fetch_array($res_3)){
$matches[$row_3['tag']] = $row_3['tag'];
}

print drupal_to_js($matches);

}
Wobei die ungefähr so aussehen könnte. Mittels drupal_to_js werden die Daten in der richtigen Form zurückgegeben.

Und zu guter Letzt muss nur noch das Formularfeld definiert werden. Dies kann leicht über die Form API gemacht werden:

$form['ngroups_search_tags'] = array(
'#type' => 'textfield',
'#title' => t('Tagsuche'),
'#description' => t("Inhalt deiner Gruppe durchsuchen"),
'#autocomplete_path' => 'ngroups/ngroups_autocomplete_search_tag',

);

Das wäre es dann auch schon gewesen!

Dienstag, August 07, 2007

Autocomplete für Drupal mit JQuery

Die Funktion "Autocomplete" kennt jeder. Die gängigen Browser unterstützen diese bereits seit einiger Zeit. Ich möchte nicht mehr darauf verzichten, da es doch die Arbeit erleichtert. Auch in Drupal lässt es sich relative einfach einbinden. Ich zeige hier ganz kurz die wichtigsten Grundlagen auf.

Update 8.8.07: Es gibt eine einfachere und bessere Möglichkeit.

Zuerst müssen die entsprechenden Daten herunter geladen werden.

Daten laden
Damit steht die entsprechende CSS und Javascript Datei zur Verfügung und kann von Drupal verwendet werden.
drupal_add_js('/jquery.autocomplete.js');
drupal_add_css('/css/jquery.autocomplete.css');

Ajax Schnittstelle erstellen
Als nächstes muss eine entsprechende Ajax Schnittstelle im Modul bereitgestellt werden. Dies gschieht im hook hook_menu():

$items[] = array(
'path' => 'autocomplete',
'callback' => 'autocomplete',
'access' => user_access('access autocomplete'),
'type' => MENU_CALLBACK);
Path: Dies ist die Schnittstelle, welche vom Javascript angesprochen werden kann.
Callback: Falls der Pfad "autocomplete" aufgerufen wird, dann wird diese Callback Funktion aufgerufen.
access: Wer hat Zugriff auf diese Funktion (muss dann auch noch im Admin Bereich ein entsprechendes Häckchen gesetzt werden.

Feld festlegen
$("#input_field").autocomplete("autocomplete", {
delay: 150,
width: 260,
maxItemsToShow:10,
lineSeparator: '%'
});
Es gibt noch viele andere Parameter, welche gewählt werden können. Dafür am Besten das Readme anschauen. "autcomplete" zeicht auf den Pfad, welcher in hook_menu spezifiziert.
wurde.

Folgende Modifikationen mussten gemacht werden:
jquery.autcomplete.js - Das Skript übergibt einen get Parameter (q). Dies klappt jedoch nicht mit Drupal, da Drupal auch q als Parameter hat. Dies führt zu Problemen. Ich habe daher, um sicher zu sein, all Variablen q in f umbenannt. Wahrscheinlich könnte man auch lediglich die entsprechenden Anpassungen in der Funktion makeUrl auf Zeile 337 machen. Damit es übersichtlicher ist, habe ich die Änderung jedoch konsequent durchgezogen.

Im Weiteren habe ich den lineSeparator geändert. Standardmässig ist '\n' als lineSeparator, doch hat das bei mir irgendwie nicht geklappt.
Das wäre dann auch schon alles.

autocomplete Funktion
Jetzt muss lediglich noch die Autocomplete Funktion auf dem Server gemacht werden. Hier können beliebige Serversachen gemacht werden:
function nickiplorerm_autocomplete(){
global $user;
$uid = $user->uid;
$q = strtolower($_GET["f"]);
if (!$q || $uid == '') return;
$sql = " SELECT DISTINCT receiver_email FROM {nickiplorerm_sent_content}
WHERE uid = '$uid'
AND receiver_email like '%$q%'";
$res = db_query($sql);
while($row = db_fetch_array($res)){
print $row['receiver_email'].' % ';
}
}

mittels $_GET["f"] kann der zu verfollständigende Text eingelesen werden. Am Schluss einfach alles mit print ausgeben und dabei nicht vergessen, den entsprechenden lineSeperator einzugeben. Ist eigentlich ganz simpel.

Donnerstag, August 02, 2007

Google Reader mit Ordner Funktion

Ich weiss nicht, wie lange diese Funktion schon vorhanden ist, aber sie ist genial. Diese erlaubt es, eine hierarchische Struktur zu machen. Besonders wenn man viele Feeds beobachtet, ist das doch sehr nützlich. Kann ich also nur weiter empfehlen...