Modul-Entwicklung
Datei-Upload mit Progressbar
Eingetragen von Scentyoo (60) am 18.05.2011 - 17:51 Uhr inHallo, ich würde gerne ein Datei-Upload mit Progressbar erzeugen (so wie in dem angehängten Bild). Dabei soll lediglich die Datei in ein Verzeichnis hochgeladen werden, aber es sollen keine Einträge in die Datenbank geschrieben werden. Am besten sollte das ganze noch per Multiupload (5 Dateien) funktionieren.
Wie muss ich das $form-Array aufbauen?
Mehrere Modulpfade (hook_menu) auf einer Seite einbinden
Eingetragen von striker182 (8) am 16.05.2011 - 08:17 Uhr inHallo zusammen,
ich habe ein kleines Archivmodul geschrieben, dass mir je nach Pfad Supporttickets aus einem bestimmten Zeitraum ausgibt.
Zum ansprechen habe ich hook_menu verwendet. Der Pfad /tickets/top10 gibt mir beispielsweise die aktuellsten 10 aus, /tickets/top100 die letzten 100 usw.
[gelöst] override theme_location_cck_field_map in Modul location\contrib\location_cck
Eingetragen von leda.ch (977) am 10.05.2011 - 13:19 Uhr inHallo zusammen,
Konnte schon mal jemand im Titel benannte Funktion in einem eigenen Modul überschreiben?
Was auch immer ich anstelle (PHPTemplate, Themename, Modulname davor...), Cache löschen
etc., schlägt die Theme Engine einfach nicht an.
Ist ja nicht das erste Mal, dass ich eine Funktion überschreibe, aber genau diese da weigert sich...
link in page.tpl
Eingetragen von Nevson (158) am 10.05.2011 - 13:18 Uhr inHI,
ich suche gerade nach einer schnellen Möglichkeit ein tag in den head Bereich der page.tpl zu bekommen mit dynamischen Inhalt.
Genauer gesagt: ich habe Videos per taxonomy Content Modul dargestellt, Video + Thumbnail, nun möchte ich die url des thumbnail in einen tag in den Header einbinden um dieses Bild beim sharen zb. Facebook nutzen zu können.
Jemand eine Idee??
[gelöst] Variable %s am Anfang einer URL mit menu_hook
Eingetragen von Medienopfer98 (65) am 06.05.2011 - 15:40 Uhr inWie der Titel schon sagt, versuche ich mit Menu_Hook mir SEO Urls aufzubauen, bzw. diese in einem Modul zu definieren. Irgendwie tue ich mir aber grad damit etwas schwer. Folgendes habe ich bereits angelegt und funktioniert:
$items['mymod/%/%node'] = array(
'title callback' => 'node_page_title',
'title arguments' => array(2),
'page callback' => 'node_page_view',
abhängige Listenfelder mit AJAX
Eingetragen von Micha1111 (290) am 06.05.2011 - 10:56 Uhr inEs gibt zwei über die Benutzerobfläche erstellte Inhaltstypen, nämlich
Vereine (es gibt dann auch 4 eingegebene Mannschaften)
und
Spieler (es gibt dann auch zu jeder Mannschaft 4 Spieler, also insgesamt 16 Spieler)
Im Inhaltstyp Spieler gibt es ein per Modul "References" ermöglichtes Nodereferencefeld spieler_team, in dem die nid des betreffenden Vereins gespeichert ist.
Nun habe ich einen dritten Inhaltstypen Brettpaarung erstellt, in dem es zwei Nodereferencefelder gibt, nämlich
brettpaarung_brettheimteam
und
brettpaarung_brettheimspieler
gibt.
Nachdem ein brettheimteam ausgewählt wurde, sollen im Feld brettheimspieler nur noch die zur Mannschaft gehörenden Spieler angezeigt werden.
Mit dem folgenden Code funktioniert das auch für neue (also node/add) Datensätze vom Typ brettpaarung:
<?php
function brettpaarung_form_alter(&$form, &$form_state, $form_id) {
//drupal_set_message("Form ID is : " . $form_id);
//drupal_set_message('<pre>'. print_r($form, 1) .'</pre>');
switch ($form_id) {
case 'brettpaarung_node_form':
$form['brettpaarung_brettheimteam'][LANGUAGE_NONE] += array(
'#ajax' => array(
'callback' => 'brettpaarung_callback',
'wrapper' => 'dropdown-second-replace',
),
);
$ausgabetext = '';
if (!empty($form_state['values']['brettpaarung_brettheimteam'])) {
$ausgabetext = $form_state['values']['brettpaarung_brettheimteam'][LANGUAGE_NONE][0]['nid'];
}
drupal_set_message('<pre>'. $ausgabetext .'</pre>');
$form['brettpaarung_brettheimspieler'][LANGUAGE_NONE]['#description'] = 'Die möglichen Spieler der Heimmannschaft.';
$form['brettpaarung_brettheimspieler'][LANGUAGE_NONE]['#options'] = _ajax_example_get_second_dropdown_options($ausgabetext);
$form['brettpaarung_brettheimspieler'][LANGUAGE_NONE]['#default_value'] = ''; //???
$form['brettpaarung_brettheimspieler'][LANGUAGE_NONE] += array(
'#prefix' => '<div id="dropdown-second-replace">',
'#suffix' => '</div>',
);
break;
default:
break;
}
}
function brettpaarung_callback($form, $form_state) {
return $form['brettpaarung_brettheimspieler'];
}
function _ajax_example_get_second_dropdown_options($arg) {
$query = db_select('node', 'n');
$query->condition('n.type', 'spieler', '=')
->fields('n', array('nid', 'title'));
$query->join('field_data_spieler_team', 's', 'n.nid = s.entity_id');
$query->condition('s.spieler_team_nid', $arg, '=');
$result = $query->execute();
$options = array();
$options['_none'] = '- Keine -';
foreach ($result->fetchAll() as $node) {
$options[$node->nid] = $node->title;
}
return $options;
}Wählt man eine Mannschaft aus, wird der AJAX-callback ausgelöst und anschließend sind die Spieler dieser Mannschaft auswählbar, soweit wunderbar.
Nun zum Problem:
Wenn ich eine bereits gespeicherte Paarung erneut aufrufe (in der bereits eine Mannschaft und auch ein Spieler ausgewählt wurde, also node/edit), zeigt das Listenfeld für den brettspieler immer nur - keine - an.
Soweit ich das bisher feststellen kann, liegt es daran, dass form_state['values']['brettheimteam'] nach dem Öffnen des Formulars immer leer ist, statt den schon vorhandenen Wert (die nid des Vereins) auszulesen. Das passiert erst wenn ich erneut einen anderen Verein auswähle.
konkrete Frage:
Wie bringe ich Drupal dazu, schon beim öffnen des Edit-Formulars
1. den Wert des Feldes brettheimteam auszulesen
2. die ajax_callback-Funktion auszuführen und damit die richtige Spielerliste anzuzeigen
und
3. den richtigen Spieler in den #default_value des Feldes brettheimspieler zu schreiben ?
- Anmelden oder Registrieren um Kommentare zu schreiben
[gelöst]JS CSS mit Ajax Request ;Drupal.attachBehaviors Problem
Eingetragen von dennis605 (138) am 05.05.2011 - 20:46 Uhr inHi, ich hätte gerne eure Lösungen, bzw. Lösungsvorschläge, oder nur Lösungsansätze für folgendes Problem:
"Drupal.attachBehaviors" allein funktioniert nicht zufriedenstellend in meinem Fall.
Kennt jmd. eine adäquate Lösung, wie man benötigte(s) Css und JS Scripte, für Inhalt, der durch eine Ajax Anfrage angefordert wurde, nachlädt bzw. nachladen lässt.
[gelöst] Node Input-Felder speichern
Eingetragen von Medienopfer98 (65) am 03.05.2011 - 15:57 Uhr inHabe ein neuen Nodetypen und tue mir grad schwer die Daten zu speichern mit node_save() und finde leider auch keine weitern Infos zu meinem Problem. Folgende Funktion habe ich, die auch nach absenden des Formulars ausgeführt wird:
function meinformular_submit($form, &$form_state)
{
$values = $form_state['values'];
$node = node_load($values['nid']);
$node->hobby = $values['hobby'];
[gelöst]Ajax implementierung mal anders
Eingetragen von dennis605 (138) am 01.05.2011 - 17:26 Uhr inHallo liebe Drupal Fans,
ich versuche nun schon länger meine Homepage mit ajax zu erweitern - bisher leider ohne Erfolg.
http://www.drupalcenter.de/node/34774
Ich habe schon verschiedene Beiträge zu dem Thema erstellt, die auch sehr hilfreich waren, aber leider noch nicht den "Durchbruch" brachten.
Deshalb habe ich mir eine andere Vorgehensweise überlegt.
Ich denke, wenn folgendes JS Script immer die komplette Website lädt
Drupal.behaviors.my_ajax = function (context) {
$('#content-group-inner .node a').live('click', function (e) {
var url = $(this).attr('href');
//$('#content-region-inner').slideUp('slow');
$('#content-region-inner').empty().html('<img src="ajax-loader.gif" style="margin-left:50%;"/>');
xhr = $.ajax({
data: 'ajax=1', //hierauf lauschen die preprocess Funktionen(funktioniert auch)
type: 'GET',
url: url,
success: function (data) {
$('#content-region-inner').replaceWith(data);
Drupal.attachBehaviors(context);
}
});
return false;
});
};könnte ich vielleicht versuchen Drupal bei einer Ajax Anfrage dazu zu bringen nur den Content auszugeben.
Also habe ich in mein Modul 2 hook_preprocess eingebaut, die auf eine Anfrage über Ajax, 2 andere tpl.php Dateien für die Ausgabe verwenden:
node-ajax.tpl.php und page-ajax.tpl.php.
So habe ich es gemacht:
function my_ajax_preprocess_page(&$vars, $hook) {
if ( isset($_GET['ajax']) && $_GET['ajax'] == 1 ) {
$vars['template_file'] = 'page-ajax';
}
}
function my_ajax_preprocess_node(&$vars, $hook) {
if ( isset($_GET['ajax']) && $_GET['ajax'] == 1 ) {
$vars['template_file'] = 'node-ajax';
}
}Jetzt dachte ich, ich könnte in der node-ajax.tpl.php nur ein
print $content einfügen, und damit nur content ausgeben.Aber weit gefehlt.
Eigenartigerweise kann ich meine node-ajax und page-ajax.tpl.php als 1:1 Kopie, wie die original Dateien meines Themes verwenden, wenn ich nur das
print $content aus meiner node-ajax.tpl entferne.Zumindest lädt sich dann nicht die ganze Seite neu, sondern alle benötigten JS und CSS Scripte, und natürlich, wie nicht erwünscht, aber erstmal egal, die komplette Seitenstruktur. Sobald ich aber den Content mit ausgebe, habe ich wieder eine kompletten reload meiner Seite.
Wie kann das sein, da ich mir den Inhalt meiner $content Variable angeschaut habe, und diese definitiv nur den Inhalt hat, den ich benötige.
Ich bitte um eure Erkärung bzw. Hilfe um zu verstehen, wie sich dieses Verhalten erklären lässt.
Anbei poste ich nochmal den kompletten Code meines Moduls, aber ohne die tpl.php Dateien, um den Post nicht unnötig aufzublähen, da die sich von anderen wohl wenig unterscheiden:
my_ajax.module:
<?php
function my_ajax_init()
{
drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js');
}
function my_ajax_preprocess_page(&$vars, $hook)
{
if (isset($_GET['ajax']) && $_GET['ajax'] == 1) {
$vars['template_file'] = 'page-ajax';
}
}
function my_ajax_preprocess_node(&$vars, $hook)
{
if (isset($_GET['ajax']) && $_GET['ajax'] == 1) {
$vars['template_file'] = 'node-ajax';
}
}my_ajax.js:
Drupal.behaviors.my_ajax = function (context) {
$('#content-group-inner .node a').live('click', function (e) {
var url = $(this).attr('href');
//$('#content-region-inner').slideUp('slow');
$('#content-region-inner').empty().html('<img src="ajax-loader.gif" style="margin-left:50%;"/>');
xhr = $.ajax({
data: 'ajax=1',
type: 'GET',
url: url,
success: function (data) {
$('#content-region-inner').replaceWith(data);
Drupal.attachBehaviors(context);
}
});
return false;
});
};Url prüfen ob sie valid ist
Eingetragen von Halpha (7) am 30.04.2011 - 19:02 Uhr inHallo,
ich habe eine Formular und in diesem Formular befindet sich ein textfield in das eine url eingetragen werden soll. Ich möchte jedoch prüfen ob diese url stimmt. Also http://abc.de z.b
Ich hab das an einer anderen Stelle im Projekt schon gesehen, nur leider ist das Projekt zu umfangreich um nachzuvollziehen wo genau denn diese Stelle ist.
<?php
$form['project_internal_fields'][$field->fid] = array(
'#type' => 'textfield',
'#title' => t($field->title. " is"),
'#description' => t($field->explanation),
'#default_value' => $is_new ? "" : $node->project_internal_fields[$field->fid],
'#weight' => $field->weight
);
?>So siehts momentan aus. Hat jemand eine Idee?
Lg
Michael

Neue Kommentare
vor 2 Tagen 17 Stunden
vor 1 Woche 6 Tagen
vor 2 Wochen 2 Stunden
vor 9 Wochen 4 Tagen
vor 9 Wochen 5 Tagen
vor 9 Wochen 5 Tagen
vor 10 Wochen 3 Tagen
vor 10 Wochen 3 Tagen
vor 11 Wochen 14 Stunden
vor 11 Wochen 14 Stunden