2

今後の予定を要約すると、次のようになります。

  • リンクを介してカレンダーをディスパッチするにはどうすればよいですか?
  • カレンダーが最初にローカルPCに保存されたときに完全に機能し、メッセージなしでインポートされたにもかかわらずWebから直接取得したときに変更できないのはなぜですか?
  • 変更に失敗した原因を見つけるにはどうすればよいですか?

完全な説明:

ICSカレンダーを作成するアプリケーションを開発しています。このカレンダーは、URLを介してユーザーに送信されます。これまでのところ、ユーザーはCalendar tab-> New Calendar->を介してカレンダーをインポートできることがわかりましたOn the Network。次に、カレンダーが生成されるURLを指定し、ウィザードに従うと、新しいカレンダーが作成されます。これは問題なく機能しますが、ユーザーが自分のリンクをクリックするだけでカレンダーをインポートできるようにする方法を見つけたいと思います(その場合は、ウィザードが自動的にトリガーされます)。リンクをメールに埋め込もうとしましたが、クリックするとブラウザがトリガーされます(HTTPプロトコルで提供されている場合、またはWebDAVプロトコルで提供されている場合はエラー)。私の目標を達成できるリンクを作成する方法を知っていますか?

しかし、本当の問題は別です。説明されているようにカレンダーをインポートし(Calendar tab-> New Calendar-> On the Network)、イベントデータを変更しようとすると、MODIFICATION_FAILEDメッセージが表示され、エラーコンソールに次のように表示されます。

Timestamp: 03/14/2013 12:20:08 PM
Error: An error occurred when writing to the calendar Test! Error code: MODIFICATION_FAILED. Description: 
Source File: resource://calendar/modules/calUtils.jsm -> file:///home/mdavi/.thunderbird/sdq097yy.default/extensions/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/calendar-js/calCalendarManager.js
Line: 976

このエラーの原因を見つけるにはどうすればよいですか?さらに、生成されたカレンダーをICSファイルにエクスポート(またはリンクからダウンロード)してから、エクスポートされたファイルを変更せずにFile-> Open->を介してそのようなファイルを開くことを試みました。このようにして、イベントデータを変更することもできます。 Calendar File ...。なぜ?私が生成したICSファイルは非常に単純で、次のようになります。

BEGIN:VCALENDAR
PRODID:-//Events Calendar//iCal4j //EN
METHOD:PUBLISH
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:...
SUMMARY:...
DTSTART:...
DTEND:...
DESCRIPTION:...
LOCATION:...
URL:...
END:VEVENT
END:VCALENDAR

VEVENTのすべてのプロパティは整形式です。

4

1 に答える 1

4

ユーザーがカレンダーのイベントをリモートで変更できるようにする予定があるのか​​、それともカレンダーデータを自分のカレンダーにインポートするようにするのかはわかりません。あなたが最初にやっていて、タイプ「iCalendar」を選んだと思います。まず最初に、いくつかの説明がありますが、タイプ間には明確な違いがあります。

  • iCalendar:このモードはWebDAVを使用します。これは、最初はデータの予定表ではなく、ファイルの転送用に作成されています。予定表データを保存するには、.icsファイルをダウンロードして変更し、再度アップロードします
  • CalDAV:これはWebDAVの拡張機能であり、特に予定表用に作成されています。サーバーが何をサポートしているかを把握するために行われる追加のクエリがあります。各イベントは具体的に照会できるため、クライアントはファイル全体をアップロードする必要はありません。

iCalendarタイプを使用している場合、Webアプリケーションはさらにいくつかのクエリをサポートする必要があります。

  • PUT /path/to/calendar.ics:このクエリは、ファイルをサーバーに保存するために行われます。このメソッドをサポートしていない場合、MODIFICATION_FAILEDがスローされます。
  • PROPFIND /path/to/calendar.ics:これはおそらくオプションですが、ネットワークの負荷を軽減し、データ損失を回避するのに役立ちます。ETagクエリは、ファイルが変更されたかどうかを確認するために実行されます。このETagはIf、ファイルが変更されていない場合にのみPUTするためにヘッダーで使用されます。

CalDAVアクセスを提供する場合は、既存のオープンソースCalDAVサーバーの1つを使用して、データを使用するバックエンドをサーバーに書き込むことをお勧めします。

残念ながら、Lightningには、リンクトリガーを自動サブスクリプションにする方法がありませんが、そうする場合は、おそらくwebcal://webcals://スキームを使用します。それらが標準であるかどうかはわかりませんが、少なくとも一般的に使用されています。

[ファイル]>[開く]>[カレンダーファイル]を選択すると、file://URIを使用してローカルカレンダーをサブスクライブします。ファイルを削除すると、カレンダーが失われます。代わりにイベントを内部カレンダーにインポートする場合は、ローカルカレンダーを作成し、[イベントとタスク]メニューを使用してファイルからイベントをインポートする必要があります。ダウンロードせずにリモートファイルでそれを行う方法はありません。

さらにデバッグするには、[オプション]>[詳細]>[一般]>[構成エディター]で高度な構成エディターを開き、設定とを有効にしcalendar.debug.logますcalendar.debug.log.verbose。Lightningの新しいバージョンでは、より多くのデバッグ情報のプレフィックスが付いている場合があり[calICSCalendar]ます。

于 2013-03-15T09:05:49.477 に答える