neuen Termin direkt per Klick in Kalender
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 20.01.2011 - 17:40 Uhr in
Hallo,
kann ich direkt aus einer Kalenderansicht (Woche oder Tag) heraus einen neuen Termin anlegen?
Wenn ja, wie?
Vielen Dank schon mal fürs Lesen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Ja, das geht!
am 21.01.2011 - 05:38 Uhr
Hallo,
ich habe es wie folgt realisiert:
1. das Modul prepopulate installiert. Damit hast Du die Möglichkeit über einen Link in Deinem neuen Beitrag direkt ein Datum zu setzen. Z.B. erzeugt der Link "/node/add/deinInhaltstyp?edit[field_datumsfeld][value][date]=28.12.2010" für einen Inhaltstypen "deinInhaltstyp" ein vorausgefülltes Datumsfeld "datumsfeld".
2. ein Javascript eingebettet:
$(document).ready(function() {
$('.calendar-calendar .single-day').dblclick(function() {
var year = $(this).attr('date').substring(0,4);
var month = $(this).attr('date').substring(5,7);
var day = $(this).attr('date').substring(8,10);
window.location = "/node/add/deinInhaltstyp?edit[field_datumsfeld][value][date]="+day+"."+month+"."+year;
});
});
Hierdurch wird bei Doppelklick auf einen Tag (ich habe das ganze in der Monatsansicht realisiert, geht aber ähnlich bei anderen Ansichten) ein neuer Inhalt mit vorgefertigtem Datum angelegt. Den Javascript-Code müsstest Du entweder in Dein Theme oder (so wie ich) in ein externes Modul auslagern.
Natürlich könnte man auch anstatt der "Doppelklick"-Lösung einen Link einfügen.
Viele Grüße,
Tobias
Vielen Dank für die
am 21.01.2011 - 17:28 Uhr
Vielen Dank für die Lösung.
Da ich für das Projekt jetzt erst mal von D7 auf D6 zurück muss, wird es noch einen Moment dauern, bis ich wieder an diesem Punkt bin.
Wenn du ohnehin auf D6 zurück
am 21.01.2011 - 18:04 Uhr
Wenn du ohnehin auf D6 zurück musst, kannst du den Weg oben wenigstens gehen, Prepopulate gibt's nämlich noch nicht für D7.
So, das funktioniert schon
am 22.01.2011 - 16:23 Uhr
So, das funktioniert schon mal wunderbar. Mein Dank kommt von Herzen!
Allerdings würde ich das auch gern für die Tages- und die Wochenansicht realisieren. dabei soll jeweils die angeklickte Uhrzeit und das betreffende Datum mit übergeben werden.
Leider bin ich absolut unbedarft, was JS und PHP angeht.
Kannst Du mir evl. noch einen Tipp geben, welche Veränderungen ich vornehmen muss?
Schieb ;-)
am 31.01.2011 - 19:21 Uhr
Schieb ;-)
Was ganz genau willst du mit
am 31.01.2011 - 19:30 Uhr
Was ganz genau willst du mit der Tages- und Wochen-Ansicht machen? Evtl. mal ein kleines Beispiel?
Ich möchte in diesen
am 31.01.2011 - 20:05 Uhr
Ich möchte in diesen Ansichten auf eine Zeit doppelklicken können, wobei es dann einen neuen Termin erstellt, in welchem das vorher angezeigte Datum und die angeklickte Zeit voreingestellt sind.
Die Lösung von Tobias klappt ja schon wunderbar. Nur beschränkt sie sich leider auf die Monatsansicht und übernimmt "nur" das angeklickte Datum.
Wenn man diese Lösung vielleicht für die anderen Ansichten anpassen könnte...
Und wo bzw. wie genau werden
am 31.01.2011 - 20:10 Uhr
Und wo bzw. wie genau werden diese Zeiten angezeigt? Bei mir stehen da keine Uhrzeiten, kann aber an den Einstellungen liegen. Hast du mal einen Screenshot?
Formatiert ist es noch
am 31.01.2011 - 20:32 Uhr
Formatiert ist es noch nicht...
Kann mir evl. jemand den
am 01.02.2011 - 14:31 Uhr
Kann mir evl. jemand den JS-Code erläutern. Wenn ich weiß, was in den Zeilen geschrieben steht, kann ich mir vielleicht die gewünschten Anpassungen selbst erarbeiten.
Mit prepopulate werde ich mich auch noch auseinandersetzen.
Hast du mal einen Link, damit
am 01.02.2011 - 18:34 Uhr
Hast du mal einen Link, damit man sich den Kalender live anschauen kann? Denn ohne die Klassen-Namen etc. kann man da nur raten.
wie geht das
am 14.02.2011 - 12:10 Uhr
wie geht das das ich den javascript-code in mein Theme einfüge ??
mit welchen modulen würde dass gehen??
Das geht rein über das Theme.
am 14.02.2011 - 12:37 Uhr
Das geht rein über das Theme. Du packst den Code in eine Datei mit der Endung .js. Diese legtst Du in Dein Themeverzeichnis. In der .info Datei Deines Themes fügst Du nun folgendes ein
scripts[] = deinedatei.js
bei den Scripts-Zeilen. Das ist dann auch schon alles.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
geht etwas nicht
am 14.02.2011 - 16:24 Uhr
ich hab jetzt den script von oben in die datei reservieren.js gegeben und diese datei unter themes / garland gespeichert.
und in der .info datei hab ich es auch eingefügt
; $Id: garland.info,v 1.5 2007/07/01 23:27:32 goba Exp $
name = Garland
description = Tableless, recolorable, multi-column, fluid width theme (default).
version = VERSION
core = 6.x
engine = phptemplate
stylesheets[all][] = style.css
stylesheets[print][] = print.css
scripts[] = reservieren.js
; Information added by drupal.org packaging script on 2010-12-15
version = "6.20"
project = "drupal"
datestamp = "1292447788"
bei dem scipt oben steht dein Inhaltstyp dabei, was ist da genau damit gemeint??
Du willst ja in den Kalender
am 14.02.2011 - 17:08 Uhr
Du willst ja in den Kalender etwas eintragen. Und genau dafür musst Du Dir einen Inhaltstyp anlegen. Dieser Inhaltstyp heißt in einem Kalender zum Beispiel "Termin", aus dem Namen Deiner js-Datei abgeleitet könnte der Inhaltstyp bei Dir vielleicht "Reservierung" heißen.
Bist Du mit den Themen Inhaltstypen, evl. CCK und Views vertraut? Diese Dinge brauchst Du erst mal grundlegend, um Dir einen Kalender mit eigenen Inhalten zu bauen.
@Exterior: Ich sitze heute
am 14.02.2011 - 17:10 Uhr
@Exterior:
Ich sitze heute erst wieder an der Arbeit. Kann ich Dir den Link per PN schicken?
ja sicher, aber
am 14.02.2011 - 17:26 Uhr
natürlich bin ich damit vertraut
ich habe mir einen kalender erstellt mittels block und kann dann auch termine darauf erstellen
ich will nur haben das ich die termine erstellen kann mittels draufklicken auf den bestimmten tag
Aber wenn Du einen Datentyp
am 14.02.2011 - 17:41 Uhr
Aber wenn Du einen Datentyp hast geht es um das Formular auf der URL node/add/type. Nur mußt Du für Type den Maschinennamen Deines Datentyps eintragen. Also mußt Du auch in dem Script diesen URL entsprechend ändern.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
hab ich geändert mein
am 14.02.2011 - 18:19 Uhr
hab ich geändert
mein aktueller stand ist folgender
@deelite Ja, kannst du machen
am 14.02.2011 - 18:22 Uhr
@deelite
Ja, kannst du machen
Das nächste ist dann noch der
am 14.02.2011 - 21:47 Uhr
Das nächste ist dann noch der Name des Datumsfeldes in Deinem Datentyp. Das muß field_datumsfeld mit Maschinennamen heißen, damit das Script die Daten richtig weitergibt.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
ich habe jetzt auch das
am 15.02.2011 - 10:07 Uhr
ich habe jetzt auch das datumsfeld geändert funktioniert aber trotzdem noch nicht
Die gezeigte Lösung
am 15.02.2011 - 10:10 Uhr
Die gezeigte Lösung funktioniert so nur in der Monatsansicht. Hast Du das bedacht? In welcher Ansicht benötigst Du diese Funktion denn?
Exterior schaut sich das ja vielleicht mal in meinem Kalender an. Vielleicht kann er uns bei einer Lösung in anderen Ansichten helfen - was ja mein Anliegen ist.
ich hab das ja eh in der
am 15.02.2011 - 10:29 Uhr
ich hab das ja eh in der monatsansicht
bei mir funktioniert das folgender maßen
man kommt auf meine website, sieht verschiedene maschinen die man für sich reservieren kann und dann klickt man auf diese seite und dort findet man einen kalender block (hier wäre es gut wenn anstatt des kanlender blocks in der Montasansicht gleich nur der month view kommt. ) und dann mach ich einen doppelklick im month view und könnte einen eintrag machen aber da kommt immer eine fehlermeldung
Wie sieht denn die
am 15.02.2011 - 10:30 Uhr
Wie sieht denn die Fehlermeldung aus?
Objekt nicht gefunden! Der
am 15.02.2011 - 10:36 Uhr
Objekt nicht gefunden!
Der angeforderte URL konnte auf dem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder nicht mehr aktuell zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler.
Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 404
localhost
02/15/11 09:23:36
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
Dann zeig mal bitte Dein
am 15.02.2011 - 10:38 Uhr
Dann zeig mal bitte Dein aktuelles Javascript.
Zitat: $(document).ready(func
am 15.02.2011 - 10:48 Uhr
$(document).ready(function() {
$('.calendar-calendar .single-day').dblclick(function() {
var year = $(this).attr('date').substring(0,4);
var month = $(this).attr('date').substring(5,7);
var day = $(this).attr('date').substring(8,10);
window.location = "/node/add/reservation?edit[field_calender_tag][value][date]="+day+"."+month+"."+year;
});
});
wie lautet denn die url zu
am 15.02.2011 - 10:57 Uhr
wie lautet denn die url zu der webseite?
Und der maschinenlesbare Name
am 15.02.2011 - 10:59 Uhr
Und der maschinenlesbare Name des Inhaltstyps heißt auch "reservation" und nicht "reservierung"?
die website ist derzeit noch
am 15.02.2011 - 10:59 Uhr
die website ist derzeit noch offline also nur local
Gib mir trotzdem mal die url
am 15.02.2011 - 11:02 Uhr
Gib mir trotzdem mal die url - so, wie du die Seite aufrufst. Ich will andeuten, dass in dem Pfad im JS ein Unterverzeichnis angegeben werden muss, sofern es eins gibt. Der Pfad geht vom root-Pfad des Servers aus. Das war bei mir das Problem.
http://localhost/drupal/
am 15.02.2011 - 11:04 Uhr
http://localhost/drupal/
Dann schreib Deinen Pfad mal
am 15.02.2011 - 11:07 Uhr
Dann schreib Deinen Pfad mal so:
window.location = "/drupal/node/add/reservation?edit[field_calender_tag][value][date]="+day+"."+month+"."+year;
Wenn das nichts hilft, dann zeig mal den Pfad aus der Adresszeile, wenn Du die Fehlermeldung siehst.
http://drupal.org/project/pre
am 15.02.2011 - 11:08 Uhr
http://drupal.org/project/prepopulate hast Du aber installiert, oder?
danke !!!!!
am 15.02.2011 - 11:09 Uhr
es funktioniert wie ich es will
herzlichen dank
War es der Pfad?
am 15.02.2011 - 11:10 Uhr
War es der Pfad?
Schön, dass mein Code so gut ankommt :)
am 15.02.2011 - 11:13 Uhr
Hallo zusammen,
freut mich zu lesen, dass mein Code gut bei Euch ankommt.
Wie Ihr schon gemerkt habt, funktioniert der Code an sich gut, jedoch müssen einige Dinge vorausgesetzt werden.
Ich fasse noch einmal kurz zusammen:
$('.calendar-calendar .single-day') ...
Das Doppelclick event findet auf allen single-day-Elementen statt, die innerhalb der Klasse calendar-calenda liegen. Hier ist ein wenig CSS-Verständnis notwendig. Ich habe das single-day-Element gewählt, weil dort ein Attribut date vorhanden ist. Diese wird in den nächsten Scriptzeilen auseinander genommen.Wer nun das ganze in einer anderen Ansicht nutzen möchte, muss also die passenden Klassen im Code finden und neben dem Datum noch irgendwie die Uhrzeit extrahieren.
Hoffe, dass es so etwas klarer geworden ist.
Viele Grüße,
Tobias
Im CSS ist das zu suchen...
am 15.02.2011 - 11:13 Uhr
Im CSS ist das zu suchen... Jetzt gab es zumindest einen Zündfunken...
Herzlichen Dank für die Erläuterung!
ja es war der pfad danke
am 15.02.2011 - 13:20 Uhr
ja es war der pfad
danke nochmals für deine hilfe
Ich denke, dass ich die
am 15.02.2011 - 15:45 Uhr
Ich denke, dass ich die Lösung jetzt durchschaut habe.
Allerdings gibt es gerade in der Wochenansicht keinerlei Anhaltspunkt, irgendwo das Datum des Tages auszulesen. Sollte ich daran scheitern?
TobiasR schrieb Hallo, ich
am 01.05.2011 - 02:40 Uhr
Hallo,
ich habe es wie folgt realisiert:
1. das Modul prepopulate installiert. Damit hast Du die Möglichkeit über einen Link in Deinem neuen Beitrag direkt ein Datum zu setzen. Z.B. erzeugt der Link "/node/add/deinInhaltstyp?edit[field_datumsfeld][value][date]=28.12.2010" für einen Inhaltstypen "deinInhaltstyp" ein vorausgefülltes Datumsfeld "datumsfeld".
2. ein Javascript eingebettet:
$(document).ready(function() {
$('.calendar-calendar .single-day').dblclick(function() {
var year = $(this).attr('date').substring(0,4);
var month = $(this).attr('date').substring(5,7);
var day = $(this).attr('date').substring(8,10);
window.location = "/node/add/deinInhaltstyp?edit[field_datumsfeld][value][date]="+day+"."+month+"."+year;
});
});
Hierdurch wird bei Doppelklick auf einen Tag (ich habe das ganze in der Monatsansicht realisiert, geht aber ähnlich bei anderen Ansichten) ein neuer Inhalt mit vorgefertigtem Datum angelegt. Den Javascript-Code müsstest Du entweder in Dein Theme oder (so wie ich) in ein externes Modul auslagern.
Natürlich könnte man auch anstatt der "Doppelklick"-Lösung einen Link einfügen.
Viele Grüße,
Tobias
Hallo,
vielen Dank für diese Anleitung. Habe es genau so gemacht, es funktioniert auch soweit, bis darauf, dass das Datum nicht automatisch eingetragen wird. Mein Pfad sieht stattdessen z.B. so aus node/add/kalender-eintrag?edit[field_date][value][date]=13.05.2011
Könnt ihr mir vllt. weiterhelfen?
Wäre euch sehr dankbar.
Viele Grüße,
Max
Immer weiter machen...
Ja, der Code formatiert die
am 01.05.2011 - 22:37 Uhr
Ja, der Code formatiert die URL eben auch genau so und nicht anders. Wo genau liegt da jetzt das Problem?
Das Datumsfeld wird leider
am 01.05.2011 - 23:55 Uhr
Das Datumsfeld wird leider nicht ausgefüllt, sondern bleibt leer.
Worin könnte das Problem liegen?
Danke für die Hilfe,
Max
Immer weiter machen...
Du hast aber das
am 02.05.2011 - 00:01 Uhr
Du hast aber das Prepobulate-Modul installiert und richtig konfiguriert, oder? Und dein Feld heißt auch wirklich "field_date"?
Hallo, ja habe das Modul
am 02.05.2011 - 15:35 Uhr
Hallo,
ja habe das Modul aktiviert und das Feld heißt so. Wie konfiguiert man denn das Prepobulate-Modul, finde im Admin Bereich leider keinen Link dazu?
Nutze übrigens Drupal 6
Danke!
Viele Grüße,
Max
Immer weiter machen...
Schau dir das hier mal dazu
am 02.05.2011 - 18:58 Uhr
Schau dir das hier mal dazu an:
http://drupal.org/node/228167
Hallo, möchte auch gerne
am 18.05.2013 - 17:57 Uhr
Hallo, möchte auch gerne Termine direkt über die Kalenderansicht (Monat) hinzufügen können.
Aus diesem Grunde möchte ich das Thema mal für D7 Nutzer weiter nutzen.
Hat das schon jemand mit D7 genutzt?
Habe alle Ratschläge aus diversen Threads genutzt, aber leider ohne Erfolg... OK... ist auch noch die dev-version von prepopulate.
js-Datei mit folgenden Code im Route des Themes gelegt:
// JavaScript Document
/* add dubbleklick day */
$(document).ready(function() {
$('.calendar-calendar .single-day').dblclick(function() {
var year = $(this).attr('date').substring(0,4);
var month = $(this).attr('date').substring(5,7);
var day = $(this).attr('date').substring(8,10);
window.location = "/node/add/date?edit[field_datumsfeld][value][date]="+day+"."+month+"."+year;
});
});
in der .info-Datei des Themes ist die .js-Datei eingefügt
scripts[] = script.js
scripts[] = dayklick.js
Es gibt den Inhaltstyp "Termin" mit dem Maschienennamen "date" und das Datumsfeld "field_datumsfeld".
hier :http://drupal.org/node/228167 wird für D7 folgender Code empfohlen:
http://www.example.com/node/add/content?edit[body][und][0][value]=this is the body
Würde ja für meine Verwendung dann so aussehen?
window.location = "/node/add/date?edit[field_datumsfeld][und][0][value][date]="+day+"."+month+"."+year;
...oder was meint Ihr?
vielen Dank für hilfreiche Tipps
Thorsten
Nachtrag:
die Fehlerkonsole von Firefox meint : TypeError $is not a function (in Zeile 3:
$(document).ready(function() {
)