2012-05-31 14 views
9

ユーザーがカレンダーのどの部分をクリックしたときにも、どのようにイベントを作成しますか?それを新しいイベントとしてデータベースに保存しますか? 私はあなたが使用する必要があることを知っている:select:function(start、end、allDay) "開始"と "終了"時間を得る。しかし、私はこのデータを取得した後、どのようにデータベースに渡すのですか?カレンダー(レール)をクリックしたときにfullcalendarでイベントを作成

ありがとうございます!

答えて

22

あなたのDBに新しいイベントを保存するためにajaxリクエストを使用することができます。

プロジェクトのホームページにdemoがあります。これは簡単に適用できます。 jQueryの経由
は、このような例:あなたは、特定のクリックに反応する必要がある場合は

select: function(start, end, allDay) { 
    var title = prompt('Event Title:'); 
    if (title) { 
     calendar.fullCalendar('renderEvent', 
      { 
       title: title, 
       start: start, 
       end: end, 
       allDay: allDay 
      }, 
      true // make the event "stick" 
     ); 
     /** 
     * ajax call to store event in DB 
     */ 
     jQuery.post(
      "event/new" // your url 
      , { // re-use event's data 
       title: title, 
       start: start, 
       end: end, 
       allDay: allDay 
      } 
     ); 
    } 
    calendar.fullCalendar('unselect'); 
} 

、あなたもこれを試すことができますが、自分でイベント終了または期間をgrepしなければなりません。

dayClick: function(date, allDay, jsEvent, view) { 
    var title = prompt('Event Title:'); 
    /** 
    * again : ajax call to store event in DB 
    */ 
    jQuery.post(
     "event/new" // your url 
     , { // re-use event's data 
      title: title, 
      start: date 
      allDay: allDay 
     } 
    ); 
} 
+0

ありがとうございます。しかし、タイトル、開始、終了のパラメータを送信しても問題はあります。 Railsコントローラはそれらを取得しません:/私はそれらを正しく渡すべきですか? – CanCeylan

+0

こんにちは、これは、jQueryの投稿リクエストによって渡されたパラメータを、どのようにrailsコントローラが処理するかによって異なります。シンプルなGoogleの検索では、このトリックを行うことができます! – domi27

+0

domi27、それをsbyに割り当てるには新しいイベントを作成/レンダリングする方法を教えてください。私の同僚であるジョン・スミス(私のレールのバックエンドに存在する)にイベントを割り当てたいとしましょう。 renderEventの前にデータを提供する必要がありますが、どうすればデータベースから取得できますか?タイトルは単純な文字列なので簡単ですが、開始と終了はjqueryによって渡されますが、既存のものを手に入れる方法はありません。 –

2

ここで私はこれまで何をしているのですか? 私はここにファイル insert_data.phpカスタムを要求することにより、ポップアップを作成し、ユーザー からアパート番号とPIN番号を取得し、その後、AJAXを通じて、私は新しいイベントを作成するには、fullcalendar.php

  selectable: true, 
      selectHelper: true, 
      select: function(start, end, allDay) { 
          //alert(start); 
          var title = $("#dialog").dialog(); 
          //$(".popup").show(); 
          //$(".title").focus(); 
          var start = start; //Date.parse(start)/1000; 
          var end = end; //Date.parse(end)/1000; 
          var allDay = allDay; 
          //alert(allDay); 

          $("#save_frm").click(function(){ 


           var pin_number = $("#pin_number").val(); 
           var apartment_number =$("#apartment_number").val(); 

           //alert(start); 
           //alert(end); 
           //alert(allDay); 
           $.ajax({ 
            type: "POST", 
            url: "<?php echo WP_PLUGIN_URL; ?>/wp-fullcalendar/insert_data.php", 
            data: { apartment_number: apartment_number, pin_number: pin_number, start: start, end: end, allDay: allDay } 
           }).done(function(msg) { 
            alert("Data Saved: " + msg); 
            $("#dialog").dialog("close"); 
            window.location.reload(true); 
            calendar.fullCalendar('unselect'); 
            calendar.fullCalendar('refetchEvents'); 


           }); 

          });//select function end here 

          // calendar.fullCalendar('unselect'); 
         }, 

//ためのコードですその後、ajaxリクエストはinsert_data.phpに行きます。コードは別ファイルでなければなりません。

require("../../../wp-load.php");  //connection with database 
require("../../../wp-config.php"); 

//print_r(explode(" ",$_POST['end'])); 

$start = explode(" ",$_POST['start']); 
//coding for extracting date 
$start_date=$start[3].'-'; 
//$start_date.=$start[1].'-'; 
if($start[1]=='Jan') 
{ 
    $start_date.='01'; 
} 
else if($start[1]=='Feb') 
{ 
    $start_date.='02'; 
} 
else if($start[1]=='Mar') 
{ 
    $start_date.='03'; 
} 
else if($start[1]=='Apr') 
{ 
    $start_date.='04'; 
} 
else if($start[1]=='May') 
{ 
    $start_date.='05'; 
} 
else if($start[1]=='Jun') 
{ 
    $start_date.='06'; 
} 
else if($start[1]=='Jul') 
{ 
    $start_date.='07'; 
} 
else if($start[1]=='Aug') 
{ 
    $start_date.='08'; 
} 
else if($start[1]=='Sep') 
{ 
    $start_date.='09'; 
} 
else if($start[1]=='Oct') 
{ 
    $start_date.='10'; 
} 
else if($start[1]=='Nov') 
{ 
    $start_date.='11'; 
} 
else if($start[1]=='Dec') 
{ 
    $start_date.='12'; 
} 

$start_date.='-'.$start[2]; 
//coding for extracting date end here 
$start_time = $start[4]; 

$end = explode(" ",$_POST['end']); 
$end_time = $end[4]; 
global $wpdb; 
//$table_name = $wpdb->prefix . "em_events"; 
//$wpdb->insert($table_name, array('album' => $_POST['album'], 'artist' => $_POST['artist'])); 
// Create post object 

$apartment_number = $_POST['apartment_number']; 
$pin_number   = $_POST['pin_number']; 
$post_date   = $start_date.' ' .$start_time; 

$post = array(      'ID' => '' 
            , 'post_author'   => '1' 
            , 'post_date'   => '' 
            , 'post_date_gmt'  => '' 
            , 'post_content'   => $apartment_number 
            , 'post_tittle'   => $apartment_number 
            , 'post_excerpt'   => $apartment_number 
            , 'post_status'   => 'publish' 
            , 'comment_status'  => 'closed' 
            , 'ping_status'   => 'closed' 
            , 'post_password'  => $pin_number 
            , 'post_name'   => $apartment_number 
            , 'to_ping'    => '' 
            , 'pinged'    => '' 
            , 'post_modified'  => '' 
            , 'post_modified_gmt' => '' 
            , 'post_content_filtered'=> '0' 
            , 'post_parent'   => '0' 
            , 'guid'     => '1' 
            , 'menu_order'   => '0' 
            , 'post_type'   => 'event' 
            , 'post_mime_type'  => $post_date 
            , 'comment_count'  => '0' 
     ); 

// Insert the post into the database 
$post_id=wp_insert_post($post, $wp_error); 

if($wpdb->insert('wp_em_events', array( 
            'post_id'    => $post_id 
            , 'event_slug'   => $_POST['apartment_number'] 
            , 'event_owner'   => 1 
            , 'event_status'   => 1 
            , 'event_name'   => $_POST['apartment_number'] 
            , 'event_start_time'  => $start_time 
            , 'event_end_time'  => $end_time 
            , 'event_all_day'  => 0 
            , 'event_start_date'  => $start_date 
            , 'event_end_date'  => $start_date 
            , 'post_content'   => $_POST['apartment_number'] 
            , 'event_rsvp'   => 0 
            , 'event_rsvp_date'  => $end_date 
            , 'event_rsvp_time'  => '00:00:00' 
            , 'event_spaces'   => 0 
            , 'event_private'  => 0 
            , 'location_id'   => 0 
            //, 'recurrence_id'  => 1223 
            , 'event_category_id' => 1 
            , 'event_attributes'  => 'a:0:{}' 
            , 'event_date_created' => $start_date." ".$start_time 
            , 'event_date_modified' => $start_date." ".$start_time 
            , 'recurrence'   => 0 
            //, 'recurrence_interval' => 12 
            //, 'recurrence_freq'  => 12 
            //, 'recurrence_byday'  => 1231 
            //, 'recurrence_byweekno' => 4564 
            , 'recurrence_days'  => 0 
            //, 'blog_id'    => 456465 
            , 'group_id'    => 0 
    ))){ 

    echo "query execute"; 
    }else{ 
     echo "query not execute"; 
    } 
+4

なぜphp ?,レール... –

+0

良い解決策...レールの人々はちょうど適応する必要があります – Nowdeen

関連する問題