[gelöst] Popup Message mit Rules
Eingetragen von dennis605 (138)
am 02.03.2011 - 18:39 Uhr in
am 02.03.2011 - 18:39 Uhr in
Hallo liebe Drupaler,
weiss jmd. von euch, wie ich folgendes realisieren kann.
Ich möchte eine Regel mit dem Rules Modul unter Drupal 6.x erstellen, die eine MessageBox mit einer Nachricht anzeigen soll.
Am besten wäre eine Implementierung mit dem Popups Api Modul.
Laut Api.txt ware folgendes möglich
Popups.message(title, message)
Hier bekomme ich aber die Meldung, dass die Funktion "message" nicht gefunden werden kann.
Kann mir jmd. sagen, wie ich diese Funktion verwenden kann?
Danke für eure Hilfe.
lg
dennis605
- Anmelden oder Registrieren um Kommentare zu schreiben
Rules + Better Messages
am 03.03.2011 - 06:17 Uhr
D6 oder D7?
Aber du könntest Rules so einstellen, dass eine Message ausgegeben wird. Und dann das Modul Better Messages verwenden, das daraus ein Pop-Up macht. Letzteres gibt es aber nicht für D7.
Hallo Nicolai, danke für
am 03.03.2011 - 13:37 Uhr
Hallo Nicolai,
danke für deine Antwort.
Stimmt, tut mir Leid, das habe ich vergessen zu erwähnen.
Ich verwende Drupal 6.x.
Wenn ich deinen Vorschlag verwende, habe ich allerdings das Problem, dass alle Nachrichten, die das System mit "drupal_set_message()" anzeigt im gleichen
Stil angezeigt werden.
Ich möchte aber explizit nur diese eine Nachricht als Popup oder Modal Window anzeigen.
Ich verwende übrigens das Modul "Popup Message Box", weil ich finde, es integriert die Nachrichtenanzeige besser als "Better Messages"(optisch).
lg dennis605
Oder weiss vieleicht jmd. wie
am 03.03.2011 - 17:39 Uhr
Oder weiss vieleicht jmd. wie ich im Allgemeinen Jquery Funktionen ausführen kann?
Den Rest kann ich mir dann wahrscheinlich selber herleiten.
Ich meine aber nicht das Reagieren auf ein Event, oder eine Auswahl mittels Selektoren,
sondern einfach eine Funktion mit Parameter ausführen.
lg dennis
JQuery ist eine Teilmenge von
am 03.03.2011 - 18:16 Uhr
JQuery ist eine Teilmenge von JavaScript. Also laufen alle Funktionsaufrufe (mit und ohne Parameter) genauso oder willst Du eine Drupalfunktion von jQuery aus aufrufen?
Beste Grüße
Werner
Hallo Werner, danke, dass
am 03.03.2011 - 18:47 Uhr
Hallo Werner,
danke, dass dich mit dem Thema beschäftigst.
Ich möchte wie Oben erwähnt, eine Funktion, wie sie die "popups api" zur Verfügung stellt auf meiner Site einbinden.
Es geht hier um die Funktion:
Popups.message(title, message)
aus der Api:
As well as attaching popup behavior to links,
Popups API provides javascript function for creating in-window popup messages.
Popups.message(title, message)
Produces a simple modal box with the title, message and "OK", "Cancel" buttons.
Popups.open(title, body, buttons, width)
More powerful, allows you to specify what the buttons are and what they do.
buttons is a hash of hash, with button title and function.
* Example:
Drupal.popups.open(
Drupal.t('Warning: Please Confirm'),
Drupal.t("There are unsaved changes on this page, which you will lose if you continue."),
{
'popup_save': {
title: Drupal.t('Save Changes'),
func: function(){Drupal.popups.savePage(element, options);}
},
'popup_submit': {
title: Drupal.t('Continue'),
func: function(){Drupal.popups.removePopup(); Drupal.popups.openPath(element, options);}
},
'popup_cancel': {
title: Drupal.t('Cancel'), func: Drupal.popups.close;
}
}
);
// TODO - make a more useful api function for opening a path.
Popups.openPath = function(element, options, parent)
* @param element
* Element that was clicked to open the popups.
* @param options
* Hash of options controlling how the popups interacts with the underlying page.
* @param parent
* If path is being opened from inside another popup, that popup is the parent.
Ich dachte an etwas wie:
drupal_add_js(
$(document).ready(function() {
Popups.message(title, message)
})
);
Hallo Werner, danke, dass
am 03.03.2011 - 18:47 Uhr
Hallo Werner,
danke, dass dich mit dem Thema beschäftigst.
Ich möchte wie Oben erwähnt, eine Funktion, wie sie die "popups api" zur Verfügung stellt auf meiner Site einbinden.
Es geht hier um die Funktion:
Popups.message(title, message)
aus der Api:
As well as attaching popup behavior to links,
Popups API provides javascript function for creating in-window popup messages.
Popups.message(title, message)
Produces a simple modal box with the title, message and "OK", "Cancel" buttons.
Popups.open(title, body, buttons, width)
More powerful, allows you to specify what the buttons are and what they do.
buttons is a hash of hash, with button title and function.
* Example:
Drupal.popups.open(
Drupal.t('Warning: Please Confirm'),
Drupal.t("There are unsaved changes on this page, which you will lose if you continue."),
{
'popup_save': {
title: Drupal.t('Save Changes'),
func: function(){Drupal.popups.savePage(element, options);}
},
'popup_submit': {
title: Drupal.t('Continue'),
func: function(){Drupal.popups.removePopup(); Drupal.popups.openPath(element, options);}
},
'popup_cancel': {
title: Drupal.t('Cancel'), func: Drupal.popups.close;
}
}
);
// TODO - make a more useful api function for opening a path.
Popups.openPath = function(element, options, parent)
* @param element
* Element that was clicked to open the popups.
* @param options
* Hash of options controlling how the popups interacts with the underlying page.
* @param parent
* If path is being opened from inside another popup, that popup is the parent.
Ich dachte an etwas wie:
drupal_add_js(
$(document).ready(function() {
Popups.message(title, message)
})
);
lg
dennis605
Hast Du denn mal geprüft, ob
am 03.03.2011 - 19:31 Uhr
Hast Du denn mal geprüft, ob diese Zusatzlibrary von dem Modul überhaupt geladen ist? Irgenwoher muß der Code für diese Funktion ja kommen?
Beste Grüße
Werner
popups.js
am 03.03.2011 - 20:52 Uhr
muß vorhanden sein
dann sollte deine Methode funktionieren.
oder einfach selber machen:
drupal_add_js(drupal_get_path('module', 'popups') .'/popups.js');
Also popups.js wird geladen,
am 04.03.2011 - 12:13 Uhr
Also popups.js wird geladen, das kann im head ich sehen.
Habe es jetzt so probiert:
drupal_add_js(drupal_get_path('module', 'popups') .'/popups.js');
drupal_add_js( $(document).ready(function() {
Popups.message('test', 'test')
})
);
Dann bekomme ich aber folgende Fehlermeldung:
Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$' in /var/www/sites/all/modules/devel/devel.module(1193) : eval()'d code on line 4
Was mache ich falsch?
lg dennis605
Du mußt die
am 04.03.2011 - 12:21 Uhr
Du mußt die JavaScript/jQuery-Funktion als Text übergeben (d.h. in Double-Quotes einschließen). Was soll den PHP mit so einem Übergabeparameter machen? Klar, das das einen Syntax Error gibt.
Beste Grüße
Werner
Hallo Werner, danke, da hätte
am 04.03.2011 - 12:45 Uhr
Hallo Werner,
danke, da hätte ich auch selber drauf kommen können.
Jetzt bekomme ich keine Fehlermeldung mehr, sondern es passiert gar nichts mehr mit folgendem code:
drupal_add_js(drupal_get_path('module', 'popups') .'/popups.js');
drupal_add_js( "$(document).ready(function() {
Popups.message('test', 'test')
})
");
So müsste es doch gehen, oder?
lg
dennis605
Die Syntax ist jedensfalls in
am 04.03.2011 - 13:02 Uhr
Die Syntax ist jedensfalls in Ordnung. Ob allerdings bereits beim Document.ready Deine JavaScript Library geladen ist, kann ich Dir nicht sagen.
Beste Grüße
Werner
Also ich habe jetzt die
am 04.03.2011 - 13:19 Uhr
Also ich habe jetzt die popus.js in meine theme.info eingetragen,
ich sehe auch, dass diese im head geladen wird.
Jetzt müsste doch gewährleistet sein, daß die popups.js vor Document.ready geladen wird, oder?
Aber leider keine Reaktion, hast du vielleicht noch eine Idee?
lg
dennis605
OK, ich habs. Ich habe
am 04.03.2011 - 14:02 Uhr
OK, ich habs.
Ich habe gemerkt, dass meine script im head ausgeführt wird.
Dies ist aber nicht erwünscht.
Das Schlüsselwort ist 'inline'.
So gehts:
drupal_add_js(drupal_get_path('module', 'popups') .'/popups.js');
drupal_add_js("$(document).ready(function() {
Popups.message('test', 'test')
});
",'inline');
Damit führt Drupal das script im Body aus.
Vielen Dank für eure Unterstützung!!
lg
dennis605