2014-04-25 79 views
0

嗨我想使用拖放外部事件for fullcalendar和得到使用yii擴展完全壓延 - 這似乎只是一個包裝。yii efullcalendar小部件和外部事件拖放不工作

不工作的部分(沒有錯誤只是不起作用)是將外部事件拖放到日曆上,並且它停留在那裏。它拖了過去,但它只是回家。

閱讀fullcalendar文檔 - 它看起來像我需要提供一個回調函數'drop'屬性。我一直在使用外部事件的例子,這是整個日曆的一部分。我確實發現這個例子使用了對象名'#calendar',並且yii創建了名字'#yw0',但是在我更新後它仍然不起作用。

我找不到一個方法來使它工作。我嘗試了一種簡單的警報,它在頁面加載時被調用,而不是在拖動操作之後調用。

所以我在查看宣佈與功能的變量

//$dropcallback=new CJavaScriptExpression("alert('hi')"); 
$dropcallback=new CJavaScriptExpression(
    "function(date, allDay) { 
     var originalEventObject = $(this).data('eventObject'); 
     var copiedEventObject = $.extend({}, originalEventObject); 
     copiedEventObject.start = date; 
     copiedEventObject.allDay = allDay; 
     $('#yw0').fullCalendar('renderEvent', copiedEventObject, true); 
     if ($('#drop-remove').is(':checked')) { 
      // if so, remove the element from the Draggable Events list 
      $(this).remove(); 
     } 
    } 
    "); 

然後我創建這樣

$this->widget('ext.EFullCalendar.EFullCalendar', array(
'themeCssFile'=>'cupertino/jquery-ui.min.css', 
'options'=>array(
    'header'=>array(
     'left'=>'prev,next', 
     'center'=>'title', 
     'right'=>'today' 
    ), 
    'editable'=>true, 
    'dropable'=>true, 
    'drop'=>$dropcallback, 
    'events'=>Game::model()->gameCalendarData(), 
))); 

的widgit我的警予的experiance很少與JS相同的 - 所以任何幫助讚賞如何得到這個工作。

我明白,在JS中,你需要提供一個回調來允許拖拽操作成功。但是當它被包裹在yii widgit中時,我需要什麼樣的回叫?我嘗試了PHP回調,並且僅在頁面加載時才調用它。

我希望的結果是,我可以從DB構建外部事件列表 - 允許用戶將它們拖到日曆上 - 並將它們保存在數據庫中。

我確實設法從日曆中顯示的數據庫中獲取數據。

謝謝

+0

JavaScript文件是過時,你可能需要獲得最新的腳本和替換舊 – tinybyte

+0

通過資產的文件尋找 - jQuery是真的舊版FullCalendar v1.6.4,jQuery v1.8.3。如果我刪除資產文件夾 - 它會再次回來,但我不知道從哪裏獲取jquery。 FC changelog有更新版本的jquery - 但最新的一行說''在內部使用bower來獲取新版本的jQuery和jQuery UI「 - 所以試圖在你的應用程序中安裝bower – Adrian

+0

而不是你的應用程序的資產,日曆擴展的腳本爲它 – tinybyte

回答

0

Droppable拼寫爲兩個p。所以

'dropable'=>true, 

應該是在小部件的資源文件夾

'droppable'=>true,