Added Translation

This commit is contained in:
Christoph Haas 2016-11-29 19:58:23 +01:00
parent e70894c048
commit 010bd521bc
31 changed files with 4831 additions and 3842 deletions

View File

@ -1,7 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e7c9c2bb-66f1-4e37-904c-d33d8c113bde" name="Default" comment="" /> <list default="true" id="e7c9c2bb-66f1-4e37-904c-d33d8c113bde" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/backend/.htaccess" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Makefile" afterPath="$PROJECT_DIR$/Makefile" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/build.xml" afterPath="$PROJECT_DIR$/build.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/changelog.txt" afterPath="$PROJECT_DIR$/changelog.txt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config.php" afterPath="$PROJECT_DIR$/config.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/ABOUT.js" afterPath="$PROJECT_DIR$/js/ABOUT.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/data/Actions.js" afterPath="$PROJECT_DIR$/js/data/Actions.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/data/ResponseHandler.js" afterPath="$PROJECT_DIR$/js/data/ResponseHandler.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/data/timezones.js" afterPath="$PROJECT_DIR$/js/data/timezones.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/dialogs/ImportContentPanel.js" afterPath="$PROJECT_DIR$/js/dialogs/ImportContentPanel.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/dialogs/ImportPanel.js" afterPath="$PROJECT_DIR$/js/dialogs/ImportPanel.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/plugin.calendarimporter.js" afterPath="$PROJECT_DIR$/js/plugin.calendarimporter.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js" afterPath="$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/settings/SettingsWidget.js" afterPath="$PROJECT_DIR$/js/settings/SettingsWidget.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js" afterPath="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js" afterPath="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js" afterPath="$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/settings/ui/CalSyncPanel.js" afterPath="$PROJECT_DIR$/js/settings/ui/CalSyncPanel.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/ui/ContextMenu.js" afterPath="$PROJECT_DIR$/js/ui/ContextMenu.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/manifest.xml" afterPath="$PROJECT_DIR$/manifest.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/php/download.php" afterPath="$PROJECT_DIR$/php/download.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/php/module.calendar.php" afterPath="$PROJECT_DIR$/php/module.calendar.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/php/plugin.calendarimporter.php" afterPath="$PROJECT_DIR$/php/plugin.calendarimporter.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/php/upload.php" afterPath="$PROJECT_DIR$/php/upload.php" />
</list>
<ignored path="calendarimporter.iws" /> <ignored path="calendarimporter.iws" />
<ignored path=".idea/workspace.xml" /> <ignored path=".idea/workspace.xml" />
<ignored path=".idea/dataSources.local.xml" /> <ignored path=".idea/dataSources.local.xml" />
@ -20,104 +46,70 @@
<favorites_list name="calendarimporter" /> <favorites_list name="calendarimporter" />
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="CalSyncEditPanel.js" pinned="false" current-in-tab="false"> <file leaf-file-name="ContextMenu.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js"> <entry file="file://$PROJECT_DIR$/js/ui/ContextMenu.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1480">
<caret line="101" column="30" selection-start-line="101" selection-start-column="30" selection-end-line="101" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CalSyncGrid.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="504"> <state relative-caret-position="504">
<caret line="85" column="59" selection-start-line="85" selection-start-column="59" selection-end-line="85" selection-end-column="59" /> <caret line="101" column="8" selection-start-line="101" selection-start-column="8" selection-end-line="104" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="SettingsCalSyncWidget.js" pinned="false" current-in-tab="false"> <file leaf-file-name="plugin.calendarimporter.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js"> <entry file="file://$PROJECT_DIR$/js/plugin.calendarimporter.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="729"> <state relative-caret-position="729">
<caret line="104" column="16" selection-start-line="104" selection-start-column="16" selection-end-line="104" selection-end-column="142" /> <caret line="320" column="54" selection-start-line="320" selection-start-column="31" selection-end-line="320" selection-end-column="54" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="sync.php" pinned="false" current-in-tab="false"> <file leaf-file-name="module.calendar.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/backend/sync.php"> <entry file="file://$PROJECT_DIR$/php/module.calendar.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360"> <state relative-caret-position="301">
<caret line="24" column="47" selection-start-line="24" selection-start-column="47" selection-end-line="24" selection-end-column="47" /> <caret line="329" column="17" selection-start-line="329" selection-start-column="17" selection-end-line="329" selection-end-column="17" />
<folding> <folding>
<element signature="e#21#926#0#PHP" expanded="true" /> <element signature="e#6#914#0#PHP" expanded="true" />
<element signature="n#__construct#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#execute#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#randomstring#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#getDurationStringFromMintues#0;n#CalendarModule#0;n#!!top" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="changelog.txt" pinned="false" current-in-tab="true"> <file leaf-file-name="Makefile" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/changelog.txt"> <entry file="file://$PROJECT_DIR$/Makefile">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75"> <state relative-caret-position="15">
<caret line="5" column="19" selection-start-line="5" selection-start-column="19" selection-end-line="5" selection-end-column="19" /> <caret line="1" column="92" selection-start-line="1" selection-start-column="92" selection-end-line="1" selection-end-column="92" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="manifest.xml" pinned="false" current-in-tab="false"> <file leaf-file-name="download.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/php/download.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="28" column="35" selection-start-line="28" selection-start-column="35" selection-end-line="28" selection-end-column="35" />
<folding>
<element signature="e#7#908#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="manifest.xml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/manifest.xml"> <entry file="file://$PROJECT_DIR$/manifest.xml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="135">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="9" column="62" selection-start-line="9" selection-start-column="62" selection-end-line="9" selection-end-column="62" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="functions.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/backend/functions.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="26" selection-start-line="5" selection-start-column="26" selection-end-line="5" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.txt" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/backend/README.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="config.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/backend/config.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CalSyncEditContentPanel.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="63" selection-start-line="0" selection-start-column="63" selection-end-line="0" selection-end-column="63" />
<folding /> <folding />
</state> </state>
</provider> </provider>
@ -138,21 +130,33 @@
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/php/plugin.calendarimporter.php" />
<option value="$PROJECT_DIR$/config.php" />
<option value="$PROJECT_DIR$/js/plugin.calendarimporter.js" />
<option value="$PROJECT_DIR$/php/module.calendar.php" />
<option value="$PROJECT_DIR$/js/data/CalendarHelper.js" /> <option value="$PROJECT_DIR$/js/data/CalendarHelper.js" />
<option value="$PROJECT_DIR$/js/data/Actions.js" />
<option value="$PROJECT_DIR$/js/dialogs/ImportPanel.js" />
<option value="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js" />
<option value="$PROJECT_DIR$/js/settings/SettingsWidget.js" />
<option value="$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js" />
<option value="$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js" />
<option value="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js" />
<option value="$PROJECT_DIR$/backend/sync.php" /> <option value="$PROJECT_DIR$/backend/sync.php" />
<option value="$PROJECT_DIR$/backend/functions.php" /> <option value="$PROJECT_DIR$/backend/functions.php" />
<option value="$PROJECT_DIR$/changelog.txt" /> <option value="$PROJECT_DIR$/changelog.txt" />
<option value="$PROJECT_DIR$/Makefile" />
<option value="$PROJECT_DIR$/manifest.xml" />
<option value="$PROJECT_DIR$/php/upload.php" />
<option value="$PROJECT_DIR$/php/download.php" />
<option value="$PROJECT_DIR$/php/plugin.calendarimporter.php" />
<option value="$PROJECT_DIR$/build.xml" />
<option value="$PROJECT_DIR$/js/ABOUT.js" />
<option value="$PROJECT_DIR$/js/ui/ContextMenu.js" />
<option value="$PROJECT_DIR$/js/settings/SettingsWidget.js" />
<option value="$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js" />
<option value="$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js" />
<option value="$PROJECT_DIR$/js/settings/ui/CalSyncPanel.js" />
<option value="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js" />
<option value="$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js" />
<option value="$PROJECT_DIR$/js/dialogs/ImportPanel.js" />
<option value="$PROJECT_DIR$/js/dialogs/ImportContentPanel.js" />
<option value="$PROJECT_DIR$/js/data/ResponseHandler.js" />
<option value="$PROJECT_DIR$/js/data/Actions.js" />
<option value="$PROJECT_DIR$/js/data/timezones.js" />
<option value="$PROJECT_DIR$/backend/.htaccess" />
<option value="$PROJECT_DIR$/config.php" />
<option value="$PROJECT_DIR$/js/plugin.calendarimporter.js" />
<option value="$PROJECT_DIR$/php/module.calendar.php" />
</list> </list>
</option> </option>
</component> </component>
@ -162,6 +166,9 @@
<detection-done>true</detection-done> <detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting> <sorting>DEFINITION_ORDER</sorting>
</component> </component>
<component name="PhpServers">
<servers />
</component>
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" /> <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
<component name="ProjectFrameBounds"> <component name="ProjectFrameBounds">
<option name="x" value="65" /> <option name="x" value="65" />
@ -213,6 +220,20 @@
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" /> <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="php" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
</PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" /> <option name="myItemId" value="calendarimporter" />
@ -245,86 +266,6 @@
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" /> <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="js" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="settings" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="js" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="settings" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ui" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="js" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="settings" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="dialogs" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="js" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="dialogs" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
</PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" /> <option name="myItemId" value="calendarimporter" />
@ -343,20 +284,6 @@
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" /> <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="calendarimporter" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="backend" />
<option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
</PATH_ELEMENT>
</PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="Scope" /> <pane id="Scope" />
@ -386,6 +313,12 @@
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js"> <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
<node-interpreter>project</node-interpreter>
<node-options />
<gulpfile />
<tasks />
<arguments />
<envs />
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="js.build_tools.npm" factoryName="npm"> <configuration default="true" type="js.build_tools.npm" factoryName="npm">
@ -412,6 +345,9 @@
<component name="ShelveChangesManager" show_recycled="false"> <component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" /> <option name="remove_strategy" value="false" />
</component> </component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager"> <component name="TaskManager">
<task active="true" id="Default" summary="Default task"> <task active="true" id="Default" summary="Default task">
<changelist id="e7c9c2bb-66f1-4e37-904c-d33d8c113bde" name="Default" comment="" /> <changelist id="e7c9c2bb-66f1-4e37-904c-d33d8c113bde" name="Default" comment="" />
@ -419,12 +355,13 @@
<option name="number" value="Default" /> <option name="number" value="Default" />
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1477949602474</updated> <updated>1477949602474</updated>
<workItem from="1477949603566" duration="9042000" /> <workItem from="1477949603566" duration="9204000" />
<workItem from="1480441197414" duration="4152000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="9042000" /> <option name="totallyTimeSpent" value="13356000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="65" y="24" width="1792" height="999" extended-state="6" /> <frame x="65" y="24" width="1792" height="999" extended-state="6" />
@ -432,19 +369,19 @@
<layout> <layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" /> <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32900432" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32900432" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32900432" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32900432" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
</layout> </layout>
@ -467,131 +404,17 @@
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/Makefile"> <entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="1515">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="101" column="30" selection-start-line="101" selection-start-column="30" selection-end-line="101" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/composer.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/upload.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/data/ResponseHandler.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-456">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="n#!!doc" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/module.calendar.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1057">
<caret line="467" column="64" selection-start-line="467" selection-start-column="64" selection-end-line="467" selection-end-column="64" />
<folding>
<element signature="n#__construct#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#execute#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#randomstring#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#getDurationStringFromMintues#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#exportCalendar#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#importCalendar#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#getAttachmentPath#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#loadCalendar#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#parseCalendarToArray#0;n#CalendarModule#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="4" column="60" selection-start-line="4" selection-start-column="12" selection-end-line="4" selection-end-column="60" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/plugin.calendarimporter.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="569">
<caret line="82" column="40" selection-start-line="82" selection-start-column="29" selection-end-line="82" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/dialogs/ImportContentPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-171">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="n#!!doc" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/data/CalendarHelper.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/dialogs/ImportPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="332">
<caret line="245" column="12" selection-start-line="245" selection-start-column="12" selection-end-line="245" selection-end-column="226" />
<folding>
<element signature="n#!!doc" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/data/Actions.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="133" column="67" selection-start-line="133" selection-start-column="22" selection-end-line="133" selection-end-column="67" />
<folding>
<element signature="n#!!doc" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/SettingsWidget.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="340">
<caret line="83" column="82" selection-start-line="83" selection-start-column="82" selection-end-line="83" selection-end-column="82" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/plugin.calendarimporter.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-51">
<caret line="262" column="12" selection-start-line="262" selection-start-column="12" selection-end-line="262" selection-end-column="12" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js"> <entry file="file://$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="504"> <state relative-caret-position="1275">
<caret line="85" column="59" selection-start-line="85" selection-start-column="59" selection-end-line="85" selection-end-column="59" /> <caret line="85" column="59" selection-start-line="85" selection-start-column="59" selection-end-line="85" selection-end-column="59" />
<folding /> <folding />
</state> </state>
@ -599,12 +422,62 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js"> <entry file="file://$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="729"> <state relative-caret-position="1560">
<caret line="104" column="16" selection-start-line="104" selection-start-column="16" selection-end-line="104" selection-end-column="142" /> <caret line="104" column="16" selection-start-line="104" selection-start-column="16" selection-end-line="104" selection-end-column="142" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/backend/sync.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="24" column="47" selection-start-line="24" selection-start-column="47" selection-end-line="24" selection-end-column="47" />
<folding>
<element signature="e#21#926#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/changelog.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/manifest.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/backend/functions.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="26" selection-start-line="5" selection-start-column="26" selection-end-line="5" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/backend/README.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/backend/config.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js"> <entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
@ -613,14 +486,14 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js"> <entry file="file://$PROJECT_DIR$/php/composer.json">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1480"> <state relative-caret-position="0">
<caret line="101" column="30" selection-start-line="101" selection-start-column="30" selection-end-line="101" selection-end-column="30" /> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/js/data/CalendarHelper.js" />
<entry file="file://$PROJECT_DIR$/backend/functions.php"> <entry file="file://$PROJECT_DIR$/backend/functions.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75"> <state relative-caret-position="75">
@ -637,6 +510,139 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/backend/sync.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="24" column="47" selection-start-line="24" selection-start-column="47" selection-end-line="24" selection-end-column="47" />
<folding>
<element signature="e#21#926#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/changelog.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="30" selection-start-line="2" selection-start-column="30" selection-end-line="2" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/build.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="56" selection-start-line="2" selection-start-column="56" selection-end-line="2" selection-end-column="56" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/ABOUT.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="744">
<caret line="61" column="71" selection-start-line="61" selection-start-column="71" selection-end-line="61" selection-end-column="71" />
<folding>
<marker date="1480442383471" expanded="true" signature="1214:1218" ph="&lt;" />
<marker date="1480442383471" expanded="true" signature="1244:1248" ph="&gt;" />
<marker date="1480442383471" expanded="true" signature="2881:2885" ph="&lt;" />
<marker date="1480442383471" expanded="true" signature="2905:2909" ph="&gt;" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/SettingsCalSyncWidget.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="945">
<caret line="63" column="55" selection-start-line="63" selection-start-column="55" selection-end-line="63" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/ui/CalSyncGrid.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="435">
<caret line="44" column="93" selection-start-line="44" selection-start-column="57" selection-end-line="44" selection-end-column="93" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/ui/CalSyncPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="744">
<caret line="65" column="17" selection-start-line="65" selection-start-column="17" selection-end-line="65" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/SettingsWidget.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="20" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditContentPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="624">
<caret line="48" column="55" selection-start-line="48" selection-start-column="55" selection-end-line="48" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/external/Ext.util.base64.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/settings/dialogs/CalSyncEditPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="585">
<caret line="147" column="28" selection-start-line="147" selection-start-column="28" selection-end-line="147" selection-end-column="64" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/dialogs/ImportContentPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="774">
<caret line="63" column="2" selection-start-line="63" selection-start-column="2" selection-end-line="63" selection-end-column="2" />
<folding>
<element signature="n#!!doc" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/dialogs/ImportPanel.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="n#!!doc" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/data/ResponseHandler.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="29" selection-start-line="1" selection-start-column="29" selection-end-line="1" selection-end-column="29" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/data/timezones.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-9350">
<caret line="90" column="87" selection-start-line="90" selection-start-column="87" selection-end-line="90" selection-end-column="87" />
<folding>
<element signature="n#!!doc" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/backend/README.txt"> <entry file="file://$PROJECT_DIR$/backend/README.txt">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
@ -645,28 +651,111 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/backend/sync.php"> <entry file="file://$PROJECT_DIR$/backend/.htaccess">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360"> <state relative-caret-position="0">
<caret line="24" column="47" selection-start-line="24" selection-start-column="47" selection-end-line="24" selection-end-column="47" /> <caret line="0" column="13" selection-start-line="0" selection-start-column="13" selection-end-line="0" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="59" selection-start-line="2" selection-start-column="54" selection-end-line="2" selection-end-column="59" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/plugin.calendarimporter.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-90">
<caret line="36" column="5" selection-start-line="36" selection-start-column="5" selection-end-line="36" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/upload.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-314">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding> <folding>
<element signature="e#21#926#0#PHP" expanded="true" /> <element signature="e#6#905#0#PHP" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/js/ui/ContextMenu.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="504">
<caret line="101" column="8" selection-start-line="101" selection-start-column="8" selection-end-line="104" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/download.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="28" column="35" selection-start-line="28" selection-start-column="35" selection-end-line="28" selection-end-column="35" />
<folding>
<element signature="e#7#908#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/data/Actions.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1191">
<caret line="45" column="63" selection-start-line="45" selection-start-column="63" selection-end-line="45" selection-end-column="63" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/plugin.calendarimporter.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="729">
<caret line="320" column="54" selection-start-line="320" selection-start-column="31" selection-end-line="320" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/php/module.calendar.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="301">
<caret line="329" column="17" selection-start-line="329" selection-start-column="17" selection-end-line="329" selection-end-column="17" />
<folding>
<element signature="e#6#914#0#PHP" expanded="true" />
<element signature="n#__construct#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#execute#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#randomstring#0;n#CalendarModule#0;n#!!top" expanded="false" />
<element signature="n#getDurationStringFromMintues#0;n#CalendarModule#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Makefile">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="92" selection-start-line="1" selection-start-column="92" selection-end-line="1" selection-end-column="92" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/manifest.xml"> <entry file="file://$PROJECT_DIR$/manifest.xml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="135">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="9" column="62" selection-start-line="9" selection-start-column="62" selection-end-line="9" selection-end-column="62" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/changelog.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="19" selection-start-line="5" selection-start-column="19" selection-end-line="5" selection-end-column="19" />
<folding /> <folding />
</state> </state>
</provider> </provider>

View File

@ -1,2 +1,2 @@
default: default:
ant deploy; cp -r /home/osboxes/Documents/kopano-webapp-3.2.0.285/deploy/plugins/calendarimporter /usr/share/kopano-webapp/plugins/ rm -rf /home/osboxes/Documents/kopano-webapp-3.2.0.285/deploy/plugins/calendarimporter; ant deploy; cp -r /home/osboxes/Documents/kopano-webapp-3.2.0.285/deploy/plugins/calendarimporter /usr/share/kopano-webapp/plugins/

1
backend/.htaccess Normal file
View File

@ -0,0 +1 @@
deny from all

View File

@ -1,9 +1,10 @@
<project default="all"> <project default="all">
<property environment="env"/> <property environment="env"/>
<property name="root-folder" value="${basedir}/../../"/> <property name="root-folder" value="${basedir}/../.."/>
<property name="tools-folder" value="${root-folder}/tools/"/> <property name="tools-folder" value="${root-folder}/tools/"/>
<property name="target-folder" value="${root-folder}/deploy/plugins"/> <property name="target-folder" value="${root-folder}/deploy/plugins"/>
<property name="server-folder" value="${root-folder}/server"/> <property name="server-folder" value="${root-folder}/server"/>
<property name="language-folder" value="${basedir}/languages"/>
<import file="${tools-folder}/antutil.xml"/> <import file="${tools-folder}/antutil.xml"/>
@ -13,7 +14,7 @@
</classpath> </classpath>
</typedef> </typedef>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> <taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath> <classpath>
<pathelement location="${tools-folder}/lib/ant-contrib-1.0b3.jar"/> <pathelement location="${tools-folder}/lib/ant-contrib-1.0b3.jar"/>
</classpath> </classpath>
@ -53,7 +54,8 @@
<then> <then>
<mkdir dir="${target-folder}/${plugin-folder}/js"/> <mkdir dir="${target-folder}/${plugin-folder}/js"/>
<echo message="Concatenating: ${plugin-debugfile}"/> <echo message="Concatenating: ${plugin-debugfile}"/>
<zConcat outputFolder="${target-folder}/${plugin-folder}/js" outputFile="${plugin-debugfile}" prioritize="\w+"> <zConcat outputFolder="${target-folder}/${plugin-folder}/js" outputFile="${plugin-debugfile}"
prioritize="\w+">
<concatfiles> <concatfiles>
<fileset dir="js" includes="**/*.js"/> <fileset dir="js" includes="**/*.js"/>
</concatfiles> </concatfiles>
@ -67,7 +69,8 @@
<then> <then>
<mkdir dir="${target-folder}/${plugin-folder}/${plugin-css-folder}"/> <mkdir dir="${target-folder}/${plugin-folder}/${plugin-css-folder}"/>
<echo message="Concatenating: ${plugin-css-file}"/> <echo message="Concatenating: ${plugin-css-file}"/>
<zConcat outputFolder="${target-folder}/${plugin-folder}/${plugin-css-folder}" outputFile="${plugin-css-file}"> <zConcat outputFolder="${target-folder}/${plugin-folder}/${plugin-css-folder}"
outputFile="${plugin-css-file}">
<concatfiles> <concatfiles>
<fileset dir="${plugin-css-folder}" includes="**/*.css"/> <fileset dir="${plugin-css-folder}" includes="**/*.css"/>
</concatfiles> </concatfiles>
@ -97,7 +100,8 @@
<available file="${target-folder}/${plugin-folder}/js/${plugin-debugfile}" type="file"/> <available file="${target-folder}/${plugin-folder}/js/${plugin-debugfile}" type="file"/>
<then> <then>
<echo message="Compiling: ${plugin-debugfile}"/> <echo message="Compiling: ${plugin-debugfile}"/>
<zCompile inputFolder="${target-folder}/${plugin-folder}/js" inputFile="${plugin-debugfile}" outputFolder="${target-folder}/${plugin-folder}/js" outputFile="${plugin-file}"> <zCompile inputFolder="${target-folder}/${plugin-folder}/js" inputFile="${plugin-debugfile}"
outputFolder="${target-folder}/${plugin-folder}/js" outputFile="${plugin-file}">
<externs> <externs>
var Ext = {}; var Ext = {};
var Zarafa = {}; var Zarafa = {};
@ -157,8 +161,51 @@
</exec> </exec>
</target> </target>
<!-- Generate language files -->
<target name="language">
<if>
<available file="msgfmt" filepath="${env.PATH}"/>
<then>
<for param="file" parallel="true">
<fileset dir="${language-folder}">
<include name="**/LC_MESSAGES/*.po"/>
</fileset>
<sequential>
<antcall target="msgfmt">
<param name="file" value="@{file}"/>
</antcall>
</sequential>
</for>
</then>
<else>
<echo message="WARNING: msgfmt not available, not generating *.mo files for translations"/>
<!-- just copy files -->
<copy todir="${target-folder}/${plugin-folder}">
<fileset dir=".">
<include name="languages/**/*.mo"/>
<include name="languages/**/*.txt"/>
</fileset>
</copy>
</else>
</if>
</target>
<target name="msgfmt">
<propertyregex property="outfile" input="${file}" regexp=".*\/(languages\/.*)\.po"
replace="${target-folder}/${plugin-folder}/\1\.mo"/>
<echo message="Converting ${file} to ${outfile}"/>
<dirname property="outdir" file="${outfile}"/>
<mkdir dir="${outdir}"/>
<exec executable="msgfmt" failonerror="true">
<arg value="-v"/>
<arg value="-o"/>
<arg value="${outfile}"/>
<arg value="${file}"/>
</exec>
</target>
<!-- Install all files into the target folder --> <!-- Install all files into the target folder -->
<target name="deploy" depends="compress, validate"> <target name="deploy" depends="compress, validate, language">
<mkdir dir="${target-folder}/${plugin-folder}"/> <mkdir dir="${target-folder}/${plugin-folder}"/>
<!-- Copy (and validate) manifest.xml --> <!-- Copy (and validate) manifest.xml -->

View File

@ -1,3 +1,7 @@
calendarimporter 2.2.1:
- finally supporting Kopano Webapp 3.1.x
- translation to german added
calendarimporter 2.2.0: calendarimporter 2.2.0:
- support for Kopano Webapp 3.1.1 - support for Kopano Webapp 3.1.1
- Code rework - Code rework

View File

@ -1,8 +1,8 @@
<?php <?php
/** Disable the import plugin for all clients */ /** Disable the import plugin for all clients */
define('PLUGIN_CALENDARIMPORTER_USER_DEFAULT_ENABLE', true); define('PLUGIN_CALENDARIMPORTER_USER_DEFAULT_ENABLE', false);
/** Disable the sync feature for all clients */ /** Disable the sync feature for all clients */
define('PLUGIN_CALENDARIMPORTER_USER_DEFAULT_ENABLE_SYNC', true); // not yet implemented define('PLUGIN_CALENDARIMPORTER_USER_DEFAULT_ENABLE_SYNC', true);
/** The default calendar to import to*/ /** The default calendar to import to*/
define('PLUGIN_CALENDARIMPORTER_DEFAULT', "Kalender"); define('PLUGIN_CALENDARIMPORTER_DEFAULT', "Kalender");
@ -10,4 +10,3 @@
/** Tempory path for uploaded files... */ /** Tempory path for uploaded files... */
define('PLUGIN_CALENDARIMPORTER_TMP_UPLOAD', "/var/lib/kopano-webapp/tmp/"); define('PLUGIN_CALENDARIMPORTER_TMP_UPLOAD', "/var/lib/kopano-webapp/tmp/");
?>

View File

@ -1,5 +1,5 @@
/** /**
* ABOUT.js zarafa calender to ics im/exporter * ABOUT.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
@ -59,7 +59,7 @@ Zarafa.plugins.calendarimporter.ABOUT = ""
+ "<h1>Ics-parser</h1>" + "<h1>Ics-parser</h1>"
+ "<p>Copyright 2002-2007 Martin Thoma <info@martin-thoma.de></p>" + "<p>Copyright 2002-2007 Martin Thoma &lt;info@martin-thoma.de&gt;</p>"
+ "<p>Licensed under the MIT License.</p>" + "<p>Licensed under the MIT License.</p>"

View File

@ -41,8 +41,8 @@ Zarafa.plugins.calendarimporter.data.Actions = {
downloadICS: function (response) { downloadICS: function (response) {
if (response.status == false) { if (response.status == false) {
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : dgettext('plugin_files', 'Warning'), title: dgettext('plugin_calendarimporter', 'Warning'),
msg : dgettext('plugin_files', response.message), msg: response.message,
icon: Zarafa.common.dialogs.MessageBox.WARNING, icon: Zarafa.common.dialogs.MessageBox.WARNING,
buttons: Zarafa.common.dialogs.MessageBox.OK buttons: Zarafa.common.dialogs.MessageBox.OK
}); });

View File

@ -1,5 +1,5 @@
/** /**
* ResponseHandler.js zarafa calender to ics im/exporter * ResponseHandler.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas

View File

@ -1,5 +1,5 @@
/** /**
* timezones.js zarafa calender to ics im/exporter * timezones.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas

View File

@ -1,5 +1,5 @@
/** /**
* ImportContentPanel.js zarafa calender to ics im/exporter * ImportContentPanel.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
@ -44,7 +44,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportContentPanel = Ext.extend(Zarafa.c
config = config || {}; config = config || {};
Ext.applyIf(config, { Ext.applyIf(config, {
layout: 'fit', layout: 'fit',
title : _('Import Calendar File'), title: dgettext('plugin_calendarimporter', 'Import Calendar File'),
closeOnSave: true, closeOnSave: true,
width: 800, width: 800,
height: 700, height: 700,

View File

@ -1,5 +1,5 @@
/** /**
* ImportPanel.js zarafa calender to ics im/exporter * ImportPanel.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
@ -121,7 +121,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
], ],
listeners: { listeners: {
afterrender: function (cmp) { afterrender: function (cmp) {
this.loadMask = new Ext.LoadMask(this.getEl(), {msg:'Loading...'}); this.loadMask = new Ext.LoadMask(this.getEl(), {msg: dgettext('plugin_calendarimporter', 'Loading...')});
if (this.icsfile != null) { // if we have got the filename from an attachment if (this.icsfile != null) { // if we have got the filename from an attachment
this.parseCalendar(this.icsfile, this.timezone, this.ignoredst); this.parseCalendar(this.icsfile, this.timezone, this.ignoredst);
@ -206,7 +206,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
store: this.store, store: this.store,
width: '100%', width: '100%',
height: 300, height: 300,
title: 'Select events to import', title: dgettext('plugin_calendarimporter', 'Select events to import'),
frame: false, frame: false,
viewConfig: { viewConfig: {
forceFit: true forceFit: true
@ -217,18 +217,46 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
sortable: true sortable: true
}, },
columns: [ columns: [
{id: 'Summary', header: 'Title', width: 200, sortable: true, dataIndex: 'subject'}, {
{header: 'Start', width: 200, sortable: true, dataIndex: 'startdate', renderer : Zarafa.common.ui.grid.Renderers.datetime}, id: 'Summary',
{header: 'End', width: 200, sortable: true, dataIndex: 'enddate', renderer : Zarafa.common.ui.grid.Renderers.datetime}, header: dgettext('plugin_calendarimporter', 'Title'),
{header: 'Location', width: 150, sortable: true, dataIndex: 'location'}, width: 200,
{header: 'Description', sortable: true, dataIndex: 'body'}, sortable: true,
{header: "Priority", dataIndex: 'priority', hidden: true}, dataIndex: 'subject'
{header: "Label", dataIndex: 'label', hidden: true}, },
{header: "Busystatus", dataIndex: 'busy', hidden: true}, {
{header: "Privacystatus", dataIndex: 'class', hidden: true}, header: dgettext('plugin_calendarimporter', 'Start'),
{header: "Organizer", dataIndex: 'organizer', hidden: true}, width: 200,
{header: "Alarm", dataIndex: 'alarms', hidden: true, renderer : Zarafa.common.ui.grid.Renderers.datetime}, sortable: true,
{header: "Timezone", dataIndex: 'timezone', hidden: true} dataIndex: 'startdate',
renderer: Zarafa.common.ui.grid.Renderers.datetime
},
{
header: dgettext('plugin_calendarimporter', 'End'),
width: 200,
sortable: true,
dataIndex: 'enddate',
renderer: Zarafa.common.ui.grid.Renderers.datetime
},
{
header: dgettext('plugin_calendarimporter', 'Location'),
width: 150,
sortable: true,
dataIndex: 'location'
},
{header: dgettext('plugin_calendarimporter', 'Description'), sortable: true, dataIndex: 'body'},
{header: dgettext('plugin_calendarimporter', 'Priority'), dataIndex: 'priority', hidden: true},
{header: dgettext('plugin_calendarimporter', 'Label'), dataIndex: 'label', hidden: true},
{header: dgettext('plugin_calendarimporter', 'Busystatus'), dataIndex: 'busy', hidden: true},
{header: dgettext('plugin_calendarimporter', 'Privacystatus'), dataIndex: 'class', hidden: true},
{header: dgettext('plugin_calendarimporter', 'Organizer'), dataIndex: 'organizer', hidden: true},
{
header: dgettext('plugin_calendarimporter', 'Alarm'),
dataIndex: 'alarms',
hidden: true,
renderer: Zarafa.common.ui.grid.Renderers.datetime
},
{header: dgettext('plugin_calendarimporter', 'Timezone'), dataIndex: 'timezone', hidden: true}
] ]
}), }),
sm: new Ext.grid.RowSelectionModel({multiSelect: true}) sm: new Ext.grid.RowSelectionModel({multiSelect: true})
@ -245,7 +273,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
name: "choosen_calendar", name: "choosen_calendar",
value: Ext.isEmpty(this.folder) ? Zarafa.plugins.calendarimporter.data.Actions.getCalendarFolderByName(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_calendar")).entryid : this.folder, value: Ext.isEmpty(this.folder) ? Zarafa.plugins.calendarimporter.data.Actions.getCalendarFolderByName(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_calendar")).entryid : this.folder,
width: 100, width: 100,
fieldLabel: "Select folder", fieldLabel: dgettext('plugin_calendarimporter', 'Select folder'),
store: myStore, store: myStore,
mode: 'local', mode: 'local',
labelSeperator: ":", labelSeperator: ":",
@ -265,7 +293,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
name: "choosen_timezone", name: "choosen_timezone",
value: Zarafa.plugins.calendarimporter.data.Timezones.unMap(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_timezone")), value: Zarafa.plugins.calendarimporter.data.Timezones.unMap(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_timezone")),
width: 100, width: 100,
fieldLabel: "Timezone", fieldLabel: dgettext('plugin_calendarimporter', 'Timezone'),
store: Zarafa.plugins.calendarimporter.data.Timezones.store, store: Zarafa.plugins.calendarimporter.data.Timezones.store,
labelSeperator: ":", labelSeperator: ":",
mode: 'local', mode: 'local',
@ -286,8 +314,8 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
ref: 'dstcheck', ref: 'dstcheck',
name: "dst_check", name: "dst_check",
width: 100, width: 100,
fieldLabel: "Ignore DST", fieldLabel: dgettext('plugin_calendarimporter', 'Ignore DST'),
boxLabel: 'This will ignore "Daylight saving time" offsets.', boxLabel: dgettext('plugin_calendarimporter', 'This will ignore "Daylight saving time" offsets.'),
labelSeperator: ":", labelSeperator: ":",
border: false, border: false,
anchor: "100%", anchor: "100%",
@ -307,7 +335,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
columnWidth: 1.0, columnWidth: 1.0,
id: 'form-file', id: 'form-file',
name: 'icsdata', name: 'icsdata',
emptyText: 'Select an .ics calendar', emptyText: dgettext('plugin_calendarimporter', 'Select an .ics calendar'),
border: false, border: false,
anchor: "100%", anchor: "100%",
height: "30", height: "30",
@ -327,7 +355,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
disabled: true, disabled: true,
width: 100, width: 100,
border: false, border: false,
text: _("Import"), text: dgettext('plugin_calendarimporter', 'Import'),
anchor: "100%", anchor: "100%",
handler: this.importCheckedEvents, handler: this.importCheckedEvents,
scope: this scope: this
@ -341,7 +369,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
disabled: true, disabled: true,
width: 100, width: 100,
border: false, border: false,
text: _("Import All"), text: dgettext('plugin_calendarimporter', 'Import All'),
anchor: "100%", anchor: "100%",
handler: this.importAllEvents, handler: this.importAllEvents,
scope: this scope: this
@ -353,7 +381,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
xtype: "button", xtype: "button",
width: 100, width: 100,
border: false, border: false,
text: _("Cancel"), text: dgettext('plugin_calendarimporter', 'Cancel'),
anchor: "100%", anchor: "100%",
handler: this.close, handler: this.close,
scope: this scope: this
@ -397,7 +425,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
if (form.isValid()) { if (form.isValid()) {
form.submit({ form.submit({
waitMsg: 'Uploading and parsing calendar...', waitMsg: dgettext('plugin_calendarimporter', 'Uploading and parsing calendar...'),
url: 'plugins/calendarimporter/php/upload.php', url: 'plugins/calendarimporter/php/upload.php',
failure: function (file, action) { failure: function (file, action) {
this.submitButton.disable(); this.submitButton.disable();
@ -458,8 +486,8 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
self.submitButton.disable(); self.submitButton.disable();
self.submitAllButton.disable(); self.submitAllButton.disable();
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : _('Parser Error'), title: dgettext('plugin_calendarimporter', 'Parser Error'),
msg : _(response["message"]), msg: response["message"],
icon: Zarafa.common.dialogs.MessageBox.ERROR, icon: Zarafa.common.dialogs.MessageBox.ERROR,
buttons: Zarafa.common.dialogs.MessageBox.OK buttons: Zarafa.common.dialogs.MessageBox.OK
}); });
@ -493,16 +521,16 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
if (Ext.isEmpty(calValue)) { // no calendar choosen if (Ext.isEmpty(calValue)) { // no calendar choosen
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : _('Error'), title: dgettext('plugin_calendarimporter', 'Error'),
msg : _('You have to choose a calendar!'), msg: dgettext('plugin_calendarimporter', 'You have to choose a calendar!'),
icon: Zarafa.common.dialogs.MessageBox.ERROR, icon: Zarafa.common.dialogs.MessageBox.ERROR,
buttons: Zarafa.common.dialogs.MessageBox.OK buttons: Zarafa.common.dialogs.MessageBox.OK
}); });
} else { } else {
if (this.eventgrid.selModel.getCount() < 1) { if (this.eventgrid.selModel.getCount() < 1) {
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : _('Error'), title: dgettext('plugin_calendarimporter', 'Error'),
msg : _('You have to choose at least one event to import!'), msg: dgettext('plugin_calendarimporter', 'You have to choose at least one event to import!'),
icon: Zarafa.common.dialogs.MessageBox.ERROR, icon: Zarafa.common.dialogs.MessageBox.ERROR,
buttons: Zarafa.common.dialogs.MessageBox.OK buttons: Zarafa.common.dialogs.MessageBox.OK
}); });
@ -550,8 +578,8 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
container.getNotifier().notify('info', 'Imported', 'Imported ' + response.count + ' events. Please reload your calendar!'); container.getNotifier().notify('info', 'Imported', 'Imported ' + response.count + ' events. Please reload your calendar!');
} else { } else {
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : _('Error'), title: dgettext('plugin_calendarimporter', 'Error'),
msg : _('Import failed: ') + response.message, msg: String.format(dgettext('plugin_calendarimporter', 'Import failed: {0}'), response.message),
icon: Zarafa.common.dialogs.MessageBox.ERROR, icon: Zarafa.common.dialogs.MessageBox.ERROR,
buttons: Zarafa.common.dialogs.MessageBox.OK buttons: Zarafa.common.dialogs.MessageBox.OK
}); });

View File

@ -1,5 +1,5 @@
/** /**
* plugin.calendarimporter.js zarafa calender to ics im/exporter * plugin.calendarimporter.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
@ -73,7 +73,7 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
*/ */
createItemExportInsertionPoint: function (include, btn) { createItemExportInsertionPoint: function (include, btn) {
return { return {
text : dgettext('plugin_files', 'Export Event'), text: dgettext('plugin_calendarimporter', 'Export Event'),
handler: this.exportToICS.createDelegate(this, [btn]), handler: this.exportToICS.createDelegate(this, [btn]),
scope: this, scope: this,
iconCls: 'icon_calendarimporter_export' iconCls: 'icon_calendarimporter_export'
@ -100,6 +100,11 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
scope: this scope: this
}); });
// Notify user
// # TRANSLATORS: {0} will be replaced by the number of contacts that will be exported
container.getNotifier().notify('info', dgettext('plugin_contactimporter', 'Calendar Export'), String.format(dgettext('plugin_calendarimporter', 'Exporting {0} events. Please wait...'), recordIds.length));
// request attachment preperation // request attachment preperation
container.getRequest().singleRequest( container.getRequest().singleRequest(
'calendarmodule', 'calendarmodule',
@ -143,7 +148,7 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
*/ */
createAttachmentImportButton: function (include, btn) { createAttachmentImportButton: function (include, btn) {
return { return {
text : _('Import to Calendar'), text: dgettext('plugin_calendarimporter', 'Import to Calendar'),
handler: this.getAttachmentFileName.createDelegate(this, [btn]), handler: this.getAttachmentFileName.createDelegate(this, [btn]),
scope: this, scope: this,
iconCls: 'icon_calendarimporter_button', iconCls: 'icon_calendarimporter_button',
@ -167,8 +172,8 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
this.scope.openImportDialog(response.tmpname); this.scope.openImportDialog(response.tmpname);
} else { } else {
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : _('Error'), title: dgettext('plugin_calendarimporter', 'Error'),
msg : _(response["message"]), msg: response["message"],
icon: Zarafa.common.dialogs.MessageBox.ERROR, icon: Zarafa.common.dialogs.MessageBox.ERROR,
buttons: Zarafa.common.dialogs.MessageBox.OK buttons: Zarafa.common.dialogs.MessageBox.OK
}); });
@ -180,9 +185,9 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
*/ */
getAttachmentFileName: function (btn, callback) { getAttachmentFileName: function (btn, callback) {
Zarafa.common.dialogs.MessageBox.show({ Zarafa.common.dialogs.MessageBox.show({
title : 'Please wait', title: dgettext('plugin_calendarimporter', 'Please wait'),
msg : 'Loading attachment...', msg: dgettext('plugin_calendarimporter', 'Loading attachment...'),
progressText: 'Initializing...', progressText: dgettext('plugin_calendarimporter', 'Initializing...'),
width: 300, width: 300,
progress: true, progress: true,
closable: false closable: false
@ -194,7 +199,8 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
if (v == 100) { if (v == 100) {
Zarafa.common.dialogs.MessageBox.hide(); Zarafa.common.dialogs.MessageBox.hide();
} else { } else {
Zarafa.common.dialogs.MessageBox.updateProgress(v / 100, Math.round(v) + '% loaded'); // # TRANSLATORS: {0} will be replaced by the percentage value (0-100)
Zarafa.common.dialogs.MessageBox.updateProgress(v / 100, String.format(dgettext('plugin_calendarimporter', '{0}% loaded'), Math.round(v)));
} }
}; };
}; };
@ -312,7 +318,7 @@ Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
Zarafa.onReady(function () { Zarafa.onReady(function () {
container.registerPlugin(new Zarafa.core.PluginMetaData({ container.registerPlugin(new Zarafa.core.PluginMetaData({
name: 'calendarimporter', name: 'calendarimporter',
displayName : _('Calendarimporter Plugin'), displayName: dgettext('plugin_calendarimporter', 'Calendarimporter Plugin'),
about: Zarafa.plugins.calendarimporter.ABOUT, about: Zarafa.plugins.calendarimporter.ABOUT,
pluginConstructor: Zarafa.plugins.calendarimporter.ImportPlugin pluginConstructor: Zarafa.plugins.calendarimporter.ImportPlugin
})); }));

View File

@ -1,3 +1,25 @@
/**
* SettingsCalSyncWidget.js, Kopano calender to ics im/exporter
*
* Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
Ext.namespace('Zarafa.plugins.calendarimporter.settings'); Ext.namespace('Zarafa.plugins.calendarimporter.settings');
/** /**
@ -39,7 +61,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsCalSyncWidget = Ext.extend(Zara
Ext.applyIf(config, { Ext.applyIf(config, {
height: 400, height: 400,
title : _('Calendar Sync settings'), title: dgettext('plugin_calendarimporter', 'Calendar Sync settings'),
xtype: 'calendarimporter.settingscalsyncwidget', xtype: 'calendarimporter.settingscalsyncwidget',
layout: { layout: {
// override from SettingsWidget // override from SettingsWidget

View File

@ -1,3 +1,25 @@
/**
* SettingsWidget.js, Kopano calender to ics im/exporter
*
* Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
Ext.namespace('Zarafa.plugins.calendarimporter.settings'); Ext.namespace('Zarafa.plugins.calendarimporter.settings');
/** /**
@ -16,19 +38,18 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
* @constructor * @constructor
* @param {Object} config Configuration object * @param {Object} config Configuration object
*/ */
constructor : function(config) constructor: function (config) {
{
config = config || {}; config = config || {};
Ext.applyIf(config, { Ext.applyIf(config, {
title : _('Calendar Import/Export plugin settings'), title: dgettext('plugin_calendarimporter', 'Calendar Import/Export plugin settings'),
xtype: 'calendarimporter.settingswidget', xtype: 'calendarimporter.settingswidget',
items: [ items: [
{ {
xtype: 'checkbox', xtype: 'checkbox',
name: 'zarafa/v1/plugins/calendarimporter/enable_sync', name: 'zarafa/v1/plugins/calendarimporter/enable_sync',
ref: 'enableSync', ref: 'enableSync',
fieldLabel : 'Enable ical sync', fieldLabel: dgettext('plugin_calendarimporter', 'Enable ical sync'),
lazyInit: false lazyInit: false
}, },
this.createSelectBox(), this.createSelectBox(),
@ -49,7 +70,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
name: "zarafa/v1/plugins/calendarimporter/default_calendar", name: "zarafa/v1/plugins/calendarimporter/default_calendar",
value: Zarafa.plugins.calendarimporter.data.Actions.getCalendarFolderByName(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_calendar")).entryid, value: Zarafa.plugins.calendarimporter.data.Actions.getCalendarFolderByName(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_calendar")).entryid,
width: 100, width: 100,
fieldLabel: "Default calender", fieldLabel: dgettext('plugin_calendarimporter', 'Default calender'),
store: myStore, store: myStore,
mode: 'local', mode: 'local',
labelSeperator: ":", labelSeperator: ":",
@ -68,7 +89,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
name: "zarafa/v1/plugins/calendarimporter/default_timezone", name: "zarafa/v1/plugins/calendarimporter/default_timezone",
value: Zarafa.plugins.calendarimporter.data.Timezones.unMap(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_timezone")), value: Zarafa.plugins.calendarimporter.data.Timezones.unMap(container.getSettingsModel().get("zarafa/v1/plugins/calendarimporter/default_timezone")),
width: 100, width: 100,
fieldLabel: "Default timezone", fieldLabel: dgettext('plugin_calendarimporter', 'Default timezone'),
store: Zarafa.plugins.calendarimporter.data.Timezones.store, store: Zarafa.plugins.calendarimporter.data.Timezones.store,
labelSeperator: ":", labelSeperator: ":",
mode: 'local', mode: 'local',
@ -126,8 +147,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
* settings which were saved to the server. * settings which were saved to the server.
* @private * @private
*/ */
onUpdateSettings : function() onUpdateSettings: function () {
{
var message = _('Your WebApp needs to be reloaded to make the changes visible!'); var message = _('Your WebApp needs to be reloaded to make the changes visible!');
message += '<br/><br/>'; message += '<br/><br/>';
message += _('WebApp will automatically restart in order for these changes to take effect'); message += _('WebApp will automatically restart in order for these changes to take effect');
@ -156,8 +176,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
* @param {String} button The button which user pressed. * @param {String} button The button which user pressed.
* @private * @private
*/ */
restartWebapp : function(button) restartWebapp: function (button) {
{
if (button === 'restart') { if (button === 'restart') {
var contextModel = this.ownerCt.settingsContext.getModel(); var contextModel = this.ownerCt.settingsContext.getModel();
var realModel = contextModel.getRealSettingsModel(); var realModel = contextModel.getRealSettingsModel();
@ -183,8 +202,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
* settings which were saved to the server. * settings which were saved to the server.
* @private * @private
*/ */
onSettingsSave : function(model, parameters) onSettingsSave: function (model, parameters) {
{
this.mun(model, 'save', this.onSettingsSave, this); this.mun(model, 'save', this.onSettingsSave, this);
Zarafa.core.Util.reloadWebapp(); Zarafa.core.Util.reloadWebapp();
}, },
@ -200,8 +218,7 @@ Zarafa.plugins.calendarimporter.settings.SettingsWidget = Ext.extend(Zarafa.sett
* @param {Object} response The response object as received from the PHP-side * @param {Object} response The response object as received from the PHP-side
* @private * @private
*/ */
onSettingsException : function(model, type, action, options, response) onSettingsException: function (model, type, action, options, response) {
{
this.loadMask.hide(); this.loadMask.hide();
// Remove event handlers // Remove event handlers

View File

@ -1,3 +1,25 @@
/**
* CalSyncEditContentPanel.js, Kopano calender to ics im/exporter
*
* Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
Ext.namespace('Zarafa.plugins.calendarimporter.settings.dialogs'); Ext.namespace('Zarafa.plugins.calendarimporter.settings.dialogs');
/** /**
@ -24,7 +46,7 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditContentPanel = Ext.e
autoSave: false, autoSave: false,
width: 400, width: 400,
height: 400, height: 400,
title : _('ICAL Sync'), title: dgettext('plugin_calendarimporter', 'ICAL Sync'),
items: [{ items: [{
xtype: 'calendarimporter.calsynceditpanel', xtype: 'calendarimporter.calsynceditpanel',
item: config.item item: config.item

View File

@ -1,3 +1,25 @@
/**
* CalSyncEditPanel.js, Kopano calender to ics im/exporter
*
* Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
Ext.namespace('Zarafa.plugins.calendarimporter.settings.dialogs'); Ext.namespace('Zarafa.plugins.calendarimporter.settings.dialogs');
/** /**
@ -93,8 +115,7 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditPanel = Ext.extend(E
* @return {Array} array of items that should be added to panel. * @return {Array} array of items that should be added to panel.
* @private * @private
*/ */
createPanelItems : function(config) createPanelItems: function (config) {
{
var icsurl = ""; var icsurl = "";
var intervall = "15"; var intervall = "15";
var user = ""; var user = "";
@ -115,7 +136,7 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditPanel = Ext.extend(E
return [{ return [{
xtype: 'fieldset', xtype: 'fieldset',
title: _('ICAL Information'), title: dgettext('plugin_calendarimporter', 'ICAL Information'),
defaultType: 'textfield', defaultType: 'textfield',
layout: 'form', layout: 'form',
flex: 1, flex: 1,
@ -124,7 +145,7 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditPanel = Ext.extend(E
flex: 1 flex: 1
}, },
items: [{ items: [{
fieldLabel: 'ICS Url', fieldLabel: dgettext('plugin_calendarimporter', 'ICS Url'),
name: 'icsurl', name: 'icsurl',
ref: '../icsurl', ref: '../icsurl',
value: icsurl, value: icsurl,
@ -132,7 +153,7 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditPanel = Ext.extend(E
}, },
{ {
xtype: 'selectbox', xtype: 'selectbox',
fieldLabel: _('Destination Calendar'), fieldLabel: dgettext('plugin_calendarimporter', 'Destination Calendar'),
name: 'calendar', name: 'calendar',
ref: '../calendar', ref: '../calendar',
value: calendar, value: calendar,
@ -147,7 +168,7 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditPanel = Ext.extend(E
}, },
{ {
xtype: 'numberfield', xtype: 'numberfield',
fieldLabel: _('Sync Intervall (minutes)'), fieldLabel: dgettext('plugin_calendarimporter', 'Sync Intervall (minutes)'),
name: 'intervall', name: 'intervall',
ref: '../intervall', ref: '../intervall',
value: intervall, value: intervall,
@ -156,21 +177,21 @@ Zarafa.plugins.calendarimporter.settings.dialogs.CalSyncEditPanel = Ext.extend(E
}, },
{ {
xtype: 'fieldset', xtype: 'fieldset',
title: _('Authentication (optional)'), title: dgettext('plugin_calendarimporter', 'Authentication (optional)'),
defaultType: 'textfield', defaultType: 'textfield',
layout: 'form', layout: 'form',
defaults: { defaults: {
anchor: '100%' anchor: '100%'
}, },
items: [{ items: [{
fieldLabel: _('Username'), fieldLabel: dgettext('plugin_calendarimporter', 'Username'),
name: 'user', name: 'user',
ref: '../user', ref: '../user',
value: user, value: user,
allowBlank: true allowBlank: true
}, },
{ {
fieldLabel: _('Password'), fieldLabel: dgettext('plugin_calendarimporter', 'Password'),
name: 'pass', name: 'pass',
ref: '../pass', ref: '../pass',
value: pass, value: pass,

View File

@ -1,3 +1,25 @@
/**
* CalSyncGrid.js, Kopano calender to ics im/exporter
*
* Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
Ext.namespace('Zarafa.plugins.calendarimporter.settings.ui'); Ext.namespace('Zarafa.plugins.calendarimporter.settings.ui');
/** /**
@ -11,8 +33,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* @constructor * @constructor
* @param {Object} config Configuration structure * @param {Object} config Configuration structure
*/ */
constructor : function(config) constructor: function (config) {
{
config = config || {}; config = config || {};
Ext.applyIf(config, { Ext.applyIf(config, {
@ -21,7 +42,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
store: config.store, store: config.store,
viewConfig: { viewConfig: {
forceFit: true, forceFit: true,
emptyText : '<div class=\'emptytext\'>' + _('No ICAL sync entry exists') + '</div>' emptyText: '<div class=\'emptytext\'>' + dgettext('plugin_calendarimporter', 'No ICAL sync entry exists') + '</div>'
}, },
loadMask: this.initLoadMask(), loadMask: this.initLoadMask(),
columns: this.initColumnModel(), columns: this.initColumnModel(),
@ -40,8 +61,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* initialize events for the grid panel. * initialize events for the grid panel.
* @private * @private
*/ */
initEvents : function() initEvents: function () {
{
Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid.superclass.initEvents.call(this); Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid.superclass.initEvents.call(this);
// select first icssync when store has finished loading // select first icssync when store has finished loading
@ -53,8 +73,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* @return {String} * @return {String}
* @private * @private
*/ */
renderAuthColumn : function(value, p, record) renderAuthColumn: function (value, p, record) {
{
return value ? "true" : "false"; return value ? "true" : "false";
}, },
@ -63,8 +82,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* @return {String} * @return {String}
* @private * @private
*/ */
renderCalendarColumn : function(value, p, record) renderCalendarColumn: function (value, p, record) {
{
return Zarafa.plugins.calendarimporter.data.Actions.getCalendarFolderByEntryid(value).display_name; return Zarafa.plugins.calendarimporter.data.Actions.getCalendarFolderByEntryid(value).display_name;
}, },
@ -73,30 +91,29 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* @return {Ext.grid.ColumnModel} column model object * @return {Ext.grid.ColumnModel} column model object
* @private * @private
*/ */
initColumnModel : function() initColumnModel: function () {
{
return [{ return [{
dataIndex: 'icsurl', dataIndex: 'icsurl',
header : _('ICS File'), header: dgettext('plugin_calendarimporter', 'ICS File'),
renderer: Zarafa.common.ui.grid.Renderers.text renderer: Zarafa.common.ui.grid.Renderers.text
}, },
{ {
dataIndex: 'calendarname', dataIndex: 'calendarname',
header : _('Destination Calender'), header: dgettext('plugin_calendarimporter', 'Destination Calender'),
renderer: Zarafa.common.ui.grid.Renderers.text renderer: Zarafa.common.ui.grid.Renderers.text
}, },
{ {
dataIndex: 'user', dataIndex: 'user',
header : _('Authentication'), header: dgettext('plugin_calendarimporter', 'Authentication'),
renderer: this.renderAuthColumn renderer: this.renderAuthColumn
}, },
{ {
dataIndex: 'intervall', dataIndex: 'intervall',
header : _('Sync Intervall') header: dgettext('plugin_calendarimporter', 'Sync Intervall')
}, },
{ {
dataIndex: 'lastsync', dataIndex: 'lastsync',
header : _('Last Synchronisation'), header: dgettext('plugin_calendarimporter', 'Last Synchronisation'),
renderer: Zarafa.common.ui.grid.Renderers.text renderer: Zarafa.common.ui.grid.Renderers.text
}] }]
}, },
@ -106,8 +123,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* @return {Ext.grid.RowSelectionModel} selection model object * @return {Ext.grid.RowSelectionModel} selection model object
* @private * @private
*/ */
initSelectionModel : function() initSelectionModel: function () {
{
return new Ext.grid.RowSelectionModel({ return new Ext.grid.RowSelectionModel({
singleSelect: true singleSelect: true
}); });
@ -119,10 +135,9 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* @return {Ext.LoadMask} The configuration object for {@link Ext.LoadMask} * @return {Ext.LoadMask} The configuration object for {@link Ext.LoadMask}
* @private * @private
*/ */
initLoadMask : function() initLoadMask: function () {
{
return { return {
msg : _('Loading ics sync entries') + '...' msg: dgettext('plugin_calendarimporter', 'Loading ics sync entries...')
}; };
}, },
@ -131,19 +146,17 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* select the first row in the grid. * select the first row in the grid.
* @private * @private
*/ */
onViewReady : function() onViewReady: function () {
{
this.getSelectionModel().selectFirstRow(); this.getSelectionModel().selectFirstRow();
}, },
/** /**
* Function will be called to remove a ics sync entry. * Function will be called to remove a ics sync entry.
*/ */
removeIcsSyncAs : function() removeIcsSyncAs: function () {
{
var icsRecord = this.getSelectionModel().getSelected(); var icsRecord = this.getSelectionModel().getSelected();
if (!icsRecord) { if (!icsRecord) {
Ext.Msg.alert(_('Alert'), _('Please select a ics sync entry.')); Ext.Msg.alert(dgettext('plugin_calendarimporter', 'Alert'), dgettext('plugin_calendarimporter', 'Please select a ics sync entry.'));
return; return;
} }
@ -155,8 +168,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncGrid = Ext.extend(Ext.grid.Gr
* it will call generic function to handle the functionality. * it will call generic function to handle the functionality.
* @private * @private
*/ */
onRowDblClick : function(grid, rowIndex) onRowDblClick: function (grid, rowIndex) {
{
Zarafa.core.data.UIFactory.openLayerComponent(Zarafa.core.data.SharedComponentType['plugins.calendarimporter.settings.dialogs.calsyncedit'], undefined, { Zarafa.core.data.UIFactory.openLayerComponent(Zarafa.core.data.SharedComponentType['plugins.calendarimporter.settings.dialogs.calsyncedit'], undefined, {
store: grid.getStore(), store: grid.getStore(),
item: grid.getStore().getAt(rowIndex), item: grid.getStore().getAt(rowIndex),

View File

@ -1,3 +1,25 @@
/**
* CalSyncPanel.js, Kopano calender to ics im/exporter
*
* Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
Ext.namespace('Zarafa.plugins.calendarimporter.settings.ui'); Ext.namespace('Zarafa.plugins.calendarimporter.settings.ui');
/** /**
@ -15,8 +37,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel = Ext.extend(Ext.Panel,
* @constructor * @constructor
* @param config Configuration structure * @param config Configuration structure
*/ */
constructor : function(config) constructor: function (config) {
{
config = config || {}; config = config || {};
if (config.store) if (config.store)
this.store = config.store; this.store = config.store;
@ -41,11 +62,10 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel = Ext.extend(Ext.Panel,
* @return {Array} array of items that should be added to panel. * @return {Array} array of items that should be added to panel.
* @private * @private
*/ */
createPanelItems : function(store) createPanelItems: function (store) {
{
return [{ return [{
xtype: 'displayfield', xtype: 'displayfield',
value : _('Setup calendars you want to subscribe to.'), value: dgettext('plugin_calendarimporter', 'Setup calendars you want to subscribe to.'),
fieldClass: 'x-form-display-field' fieldClass: 'x-form-display-field'
}, { }, {
xtype: 'container', xtype: 'container',
@ -96,8 +116,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel = Ext.extend(Ext.Panel,
* initialize events for the panel. * initialize events for the panel.
* @private * @private
*/ */
initEvents : function() initEvents: function () {
{
Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel.superclass.initEvents.call(this); Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel.superclass.initEvents.call(this);
// register event to enable/disable buttons // register event to enable/disable buttons
@ -108,8 +127,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel = Ext.extend(Ext.Panel,
* Handler function will be called when user clicks on 'Add' button. * Handler function will be called when user clicks on 'Add' button.
* @private * @private
*/ */
onCalSyncAdd : function() onCalSyncAdd: function () {
{
Zarafa.core.data.UIFactory.openLayerComponent(Zarafa.core.data.SharedComponentType['plugins.calendarimporter.settings.dialogs.calsyncedit'], undefined, { Zarafa.core.data.UIFactory.openLayerComponent(Zarafa.core.data.SharedComponentType['plugins.calendarimporter.settings.dialogs.calsyncedit'], undefined, {
store: this.store, store: this.store,
item: undefined, item: undefined,
@ -122,8 +140,7 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel = Ext.extend(Ext.Panel,
* has been changed * has been changed
* @param {Ext.grid.RowSelectionModel} selectionModel selection model that fired the event * @param {Ext.grid.RowSelectionModel} selectionModel selection model that fired the event
*/ */
onGridSelectionChange : function(selectionModel) onGridSelectionChange: function (selectionModel) {
{
var noSelection = (selectionModel.hasSelection() === false); var noSelection = (selectionModel.hasSelection() === false);
this.removeButton.setDisabled(noSelection); this.removeButton.setDisabled(noSelection);
@ -133,24 +150,21 @@ Zarafa.plugins.calendarimporter.settings.ui.CalSyncPanel = Ext.extend(Ext.Panel,
* Handler function will be called when user clicks on 'Remove' button. * Handler function will be called when user clicks on 'Remove' button.
* @private * @private
*/ */
onCalSyncRemove : function() onCalSyncRemove: function () {
{
this.calsyncGrid.removeIcsSyncAs(); this.calsyncGrid.removeIcsSyncAs();
}, },
/** /**
* Function will be used to reload data in the store. * Function will be used to reload data in the store.
*/ */
discardChanges : function() discardChanges: function () {
{
this.store.load(); this.store.load();
}, },
/** /**
* Function will be used to save changes in the store. * Function will be used to save changes in the store.
*/ */
saveChanges : function() saveChanges: function () {
{
this.store.save(); this.store.save();
} }
}); });

View File

@ -1,5 +1,5 @@
/** /**
* ContectMenu.js zarafa calender to ics im/exporter * ContectMenu.js, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
@ -63,7 +63,7 @@ Zarafa.plugins.calendarimporter.ui.ContextMenu = Ext.extend(Zarafa.hierarchy.ui.
return [{ return [{
xtype: 'menuseparator' xtype: 'menuseparator'
}, { }, {
text : _('Import Calendar'), text: dgettext('plugin_calendarimporter', 'Import Calendar'),
iconCls: 'icon_calendarimporter_import', iconCls: 'icon_calendarimporter_import',
handler: this.onContextItemImport, handler: this.onContextItemImport,
beforeShow: function (item, record) { beforeShow: function (item, record) {
@ -75,7 +75,7 @@ Zarafa.plugins.calendarimporter.ui.ContextMenu = Ext.extend(Zarafa.hierarchy.ui.
} }
} }
}, { }, {
text : _('Export Calendar'), text: dgettext('plugin_calendarimporter', 'Export Calendar'),
iconCls: 'icon_calendarimporter_export', iconCls: 'icon_calendarimporter_export',
handler: this.onContextItemExport, handler: this.onContextItemExport,
beforeShow: function (item, record) { beforeShow: function (item, record) {
@ -99,6 +99,10 @@ Zarafa.plugins.calendarimporter.ui.ContextMenu = Ext.extend(Zarafa.hierarchy.ui.
scope: this scope: this
}); });
// Notify user
// # TRANSLATORS: {0} will be replaced by the number of contacts that will be exported
container.getNotifier().notify('info', dgettext('plugin_contactimporter', 'Calendar Export'), String.format(dgettext('plugin_calendarimporter', 'Exporting {0} events. Please wait...'), this.records.get('content_count')));
// request attachment preperation // request attachment preperation
container.getRequest().singleRequest( container.getRequest().singleRequest(
'calendarmodule', 'calendarmodule',

View File

@ -0,0 +1,350 @@
msgid ""
msgstr ""
"Project-Id-Version: Plugin Calendarimporter\n"
"POT-Creation-Date: 2016-11-29 19:49+0100\n"
"PO-Revision-Date: 2016-11-29 19:49+0100\n"
"Last-Translator: \n"
"Language-Team: Christoph Haas <christoph.h@sprinternet.at>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Poedit-Basepath: ../../..\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: php\n"
"X-Poedit-SearchPath-1: js\n"
#: js/data/Actions.js:44
msgid "Warning"
msgstr "Warnung"
#: js/dialogs/ImportContentPanel.js:47
msgid "Import Calendar File"
msgstr "Kalender Datei importieren"
#: js/dialogs/ImportPanel.js:124
msgid "Loading..."
msgstr "Lade..."
#: js/dialogs/ImportPanel.js:209
msgid "Select events to import"
msgstr "Termine zum importieren auswählen"
#: js/dialogs/ImportPanel.js:222
msgid "Title"
msgstr "Titel"
#: js/dialogs/ImportPanel.js:228
msgid "Start"
msgstr "Beginn"
#: js/dialogs/ImportPanel.js:235
msgid "End"
msgstr "Ende"
#: js/dialogs/ImportPanel.js:242
msgid "Location"
msgstr "Ort"
#: js/dialogs/ImportPanel.js:247
msgid "Description"
msgstr "Beschreibung"
#: js/dialogs/ImportPanel.js:248
msgid "Priority"
msgstr "Priorität"
#: js/dialogs/ImportPanel.js:249
msgid "Label"
msgstr "Label"
#: js/dialogs/ImportPanel.js:250
msgid "Busystatus"
msgstr "Beschäftigt"
#: js/dialogs/ImportPanel.js:251
msgid "Privacystatus"
msgstr "Privat"
#: js/dialogs/ImportPanel.js:252
msgid "Organizer"
msgstr "Ersteller"
#: js/dialogs/ImportPanel.js:254
msgid "Alarm"
msgstr "Erinnerung"
#: js/dialogs/ImportPanel.js:259 js/dialogs/ImportPanel.js:296
msgid "Timezone"
msgstr "Zeitzone"
#: js/dialogs/ImportPanel.js:276
msgid "Select folder"
msgstr "Ordner auswählen"
#: js/dialogs/ImportPanel.js:317
msgid "Ignore DST"
msgstr "DST ignorieren"
#: js/dialogs/ImportPanel.js:318
msgid "This will ignore \"Daylight saving time\" offsets."
msgstr ""
"Durch diese Einstellung wird die Sommer bzw. Winterzeit Abweichung ignoriert."
#: js/dialogs/ImportPanel.js:338
msgid "Select an .ics calendar"
msgstr ".ics Kalender Datei wählen"
#: js/dialogs/ImportPanel.js:358
msgid "Import"
msgstr "Importieren"
#: js/dialogs/ImportPanel.js:372
msgid "Import All"
msgstr "Alle Importieren"
#: js/dialogs/ImportPanel.js:384 js/settings/SettingsWidget.js:165
#: js/settings/dialogs/CalSyncEditPanel.js:61
msgid "Cancel"
msgstr "Abbrechen"
#: js/dialogs/ImportPanel.js:428
msgid "Uploading and parsing calendar..."
msgstr "Kalender wird hochgeladen und verarbeitet..."
#: js/dialogs/ImportPanel.js:434 js/dialogs/ImportPanel.js:524
#: js/dialogs/ImportPanel.js:532 js/dialogs/ImportPanel.js:581
#: js/plugin.calendarimporter.js:175
msgid "Error"
msgstr "Fehler"
#: js/dialogs/ImportPanel.js:489
msgid "Parser Error"
msgstr "Verarbeitungsfehler"
#: js/dialogs/ImportPanel.js:525
msgid "You have to choose a calendar!"
msgstr "Es muss ein Kalender ausgewählt werden!"
#: js/dialogs/ImportPanel.js:533
msgid "You have to choose at least one event to import!"
msgstr "Es muss mindestens ein Termin zum Importieren ausgewählt werden."
#: js/dialogs/ImportPanel.js:582
msgid "Import failed: {0}"
msgstr "Importieren fehlgeschalgen: {0}"
#: js/plugin.calendarimporter.js:76
msgid "Export Event"
msgstr "Termin exportieren"
#. TRANSLATORS: {0} will be replaced by the number of contacts that will be exported
#. TRANSLATORS: {0} will be replaced by the number of contacts that will be exported
#: js/plugin.calendarimporter.js:105 js/ui/ContextMenu.js:104
msgid "Calendar Export"
msgstr "Kalenderexport"
#: js/plugin.calendarimporter.js:105 js/ui/ContextMenu.js:104
msgid "Exporting {0} events. Please wait..."
msgstr "Exportiere {0} Termine. Bitte warten..."
#: js/plugin.calendarimporter.js:151
msgid "Import to Calendar"
msgstr "Kalender importieren"
#: js/plugin.calendarimporter.js:188
msgid "Please wait"
msgstr "Bitte warten"
#: js/plugin.calendarimporter.js:189
msgid "Loading attachment..."
msgstr "Lade Anhang..."
#: js/plugin.calendarimporter.js:190
msgid "Initializing..."
msgstr "Initialisierung..."
#. TRANSLATORS: {0} will be replaced by the percentage value (0-100)
#: js/plugin.calendarimporter.js:203
msgid "{0}% loaded"
msgstr "{0}% geladen"
#: js/plugin.calendarimporter.js:321
msgid "Calendarimporter Plugin"
msgstr "Kalender Plugin"
#: js/settings/SettingsCalSyncWidget.js:64
msgid "Calendar Sync settings"
msgstr "Kalender Synchronisierung - Einstellungen"
#: js/settings/SettingsWidget.js:45
msgid "Calendar Import/Export plugin settings"
msgstr "Kalender Import/Export Einstellungen"
#: js/settings/SettingsWidget.js:52
msgid "Enable ical sync"
msgstr "iCAL Synchronisierung aktivieren"
#: js/settings/SettingsWidget.js:73
msgid "Default calender"
msgstr "Standard Kalender"
#: js/settings/SettingsWidget.js:92
msgid "Default timezone"
msgstr "Standard Zeitzone"
#: js/settings/SettingsWidget.js:151
msgid "Your WebApp needs to be reloaded to make the changes visible!"
msgstr "Your WebApp needs to be reloaded to make the changes visible!"
#: js/settings/SettingsWidget.js:153
msgid ""
"WebApp will automatically restart in order for these changes to take effect"
msgstr ""
"WebApp will automatically restart in order for these changes to take effect"
#: js/settings/SettingsWidget.js:157
msgid "Restart WebApp"
msgstr "Restart WebApp"
#: js/settings/SettingsWidget.js:162
msgid "Restart"
msgstr "Restart"
#: js/settings/SettingsWidget.js:187
msgid "Webapp is reloading, Please wait."
msgstr "Webapp is reloading, Please wait."
#: js/settings/dialogs/CalSyncEditContentPanel.js:49
msgid "ICAL Sync"
msgstr "iCAL Synchronisierung"
#: js/settings/dialogs/CalSyncEditPanel.js:56
msgid "Save"
msgstr "Save"
#: js/settings/dialogs/CalSyncEditPanel.js:139
msgid "ICAL Information"
msgstr "iCAL Informationen"
#: js/settings/dialogs/CalSyncEditPanel.js:148
msgid "ICS Url"
msgstr "ICS Url"
#: js/settings/dialogs/CalSyncEditPanel.js:156
msgid "Destination Calendar"
msgstr "Ziel-Kalender"
#: js/settings/dialogs/CalSyncEditPanel.js:171
msgid "Sync Intervall (minutes)"
msgstr "Synchronisationsintervall (Minuten)"
#: js/settings/dialogs/CalSyncEditPanel.js:180
msgid "Authentication (optional)"
msgstr "Anmelden (optional)"
#: js/settings/dialogs/CalSyncEditPanel.js:187
msgid "Username"
msgstr "Benutzername"
#: js/settings/dialogs/CalSyncEditPanel.js:194
msgid "Password"
msgstr "Passwort"
#: js/settings/ui/CalSyncGrid.js:45
msgid "No ICAL sync entry exists"
msgstr "Es existiert kein Synchronisierungs Eintrag"
#: js/settings/ui/CalSyncGrid.js:97
msgid "ICS File"
msgstr "ICS Datei"
#: js/settings/ui/CalSyncGrid.js:102
msgid "Destination Calender"
msgstr "Ziel-Kalender"
#: js/settings/ui/CalSyncGrid.js:107
msgid "Authentication"
msgstr "Anmeldung"
#: js/settings/ui/CalSyncGrid.js:112
msgid "Sync Intervall"
msgstr "Synchronisierungs Intervall"
#: js/settings/ui/CalSyncGrid.js:116
msgid "Last Synchronisation"
msgstr "Letzte Synchronisation"
#: js/settings/ui/CalSyncGrid.js:140
msgid "Loading ics sync entries..."
msgstr "Lade Synchronisierungseinträge..."
#: js/settings/ui/CalSyncGrid.js:159
msgid "Alert"
msgstr "Achtung"
#: js/settings/ui/CalSyncGrid.js:159
msgid "Please select a ics sync entry."
msgstr "Bitte einen Eintrag auswählen."
#: js/settings/ui/CalSyncPanel.js:68
msgid "Setup calendars you want to subscribe to."
msgstr "Kalender zur Synchronisation verwalten."
#: js/settings/ui/CalSyncPanel.js:96
msgid "Add"
msgstr "Add"
#: js/settings/ui/CalSyncPanel.js:105
msgid "Remove"
msgstr "Remove"
#: js/ui/ContextMenu.js:66
msgid "Import Calendar"
msgstr "Kalender importieren"
#: js/ui/ContextMenu.js:78
msgid "Export Calendar"
msgstr "Kalender exportieren"
#. TRANSLATORS: Filename suffix for exported files
#: php/module.calendar.php:341
msgid "_events.ics"
msgstr "_Termine.ics"
#: php/module.calendar.php:344
msgid "No events found. Export skipped!"
msgstr "Keine Termine gefunden. Export abgebrochen!"
#: php/module.calendar.php:456
msgid "ICS file empty!"
msgstr "ICS enthält keine Termine!"
#: php/module.calendar.php:594
msgid "Store could not be opened!"
msgstr "Datenbank kann nicht geöffnet werden!"
#: php/module.calendar.php:600
msgid "Wrong call, store and entryid have to be set!"
msgstr "Inkorrekter Aufruf!"
#: php/module.calendar.php:634
msgid "No event in ics file"
msgstr "ICS enthält keine Termine!"
#: php/module.calendar.php:647
msgid "File could not be read by server"
msgstr "Datei konnte vom Server nicht gelesen werden"
#: php/upload.php:69
msgid ""
"File could not be moved to TMP path! Check plugin config and folder "
"permissions!"
msgstr "Temporärer Pfad ist nicht beschreibbar!"
#: php/upload.php:72
msgid "File could not be read by server, upload error!"
msgstr ""
"Datei konnte vom Server nicht gelesen werden. Hochladen fehlgeschlagen!"

View File

@ -0,0 +1,2 @@
Deutsch
deu_DEU

View File

@ -0,0 +1,349 @@
msgid ""
msgstr ""
"Project-Id-Version: Plugin Calendarimporter\n"
"POT-Creation-Date: 2016-11-29 19:21+0100\n"
"PO-Revision-Date: 2016-11-29 19:39+0100\n"
"Last-Translator: \n"
"Language-Team: Christoph Haas <christoph.h@sprinternet.at>\n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Poedit-Basepath: ../../..\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: php\n"
"X-Poedit-SearchPath-1: js\n"
#: js/data/Actions.js:44
msgid "Warning"
msgstr "Warning"
#: js/dialogs/ImportContentPanel.js:47
msgid "Import Calendar File"
msgstr "Import Calendar File"
#: js/dialogs/ImportPanel.js:124
msgid "Loading..."
msgstr "Loading..."
#: js/dialogs/ImportPanel.js:209
msgid "Select events to import"
msgstr "Select events to import"
#: js/dialogs/ImportPanel.js:222
msgid "Title"
msgstr "Title"
#: js/dialogs/ImportPanel.js:228
msgid "Start"
msgstr "Start"
#: js/dialogs/ImportPanel.js:235
msgid "End"
msgstr "End"
#: js/dialogs/ImportPanel.js:242
msgid "Location"
msgstr "Location"
#: js/dialogs/ImportPanel.js:247
msgid "Description"
msgstr "Description"
#: js/dialogs/ImportPanel.js:248
msgid "Priority"
msgstr "Priority"
#: js/dialogs/ImportPanel.js:249
msgid "Label"
msgstr "Label"
#: js/dialogs/ImportPanel.js:250
msgid "Busystatus"
msgstr "Busystatus"
#: js/dialogs/ImportPanel.js:251
msgid "Privacystatus"
msgstr "Privacystatus"
#: js/dialogs/ImportPanel.js:252
msgid "Organizer"
msgstr "Organizer"
#: js/dialogs/ImportPanel.js:254
msgid "Alarm"
msgstr "Alarm"
#: js/dialogs/ImportPanel.js:259 js/dialogs/ImportPanel.js:296
msgid "Timezone"
msgstr "Timezone"
#: js/dialogs/ImportPanel.js:276
msgid "Select folder"
msgstr "Select folder"
#: js/dialogs/ImportPanel.js:317
msgid "Ignore DST"
msgstr "Ignore DST"
#: js/dialogs/ImportPanel.js:318
msgid "This will ignore \"Daylight saving time\" offsets."
msgstr "This will ignore \"Daylight saving time\" offsets."
#: js/dialogs/ImportPanel.js:338
msgid "Select an .ics calendar"
msgstr "Select an .ics calendar"
#: js/dialogs/ImportPanel.js:358
msgid "Import"
msgstr "Import"
#: js/dialogs/ImportPanel.js:372
msgid "Import All"
msgstr "Import All"
#: js/dialogs/ImportPanel.js:384 js/settings/SettingsWidget.js:165
#: js/settings/dialogs/CalSyncEditPanel.js:61
msgid "Cancel"
msgstr "Cancel"
#: js/dialogs/ImportPanel.js:428
msgid "Uploading and parsing calendar..."
msgstr "Uploading and parsing calendar..."
#: js/dialogs/ImportPanel.js:434 js/dialogs/ImportPanel.js:524
#: js/dialogs/ImportPanel.js:532 js/dialogs/ImportPanel.js:581
#: js/plugin.calendarimporter.js:170
msgid "Error"
msgstr "Error"
#: js/dialogs/ImportPanel.js:489
msgid "Parser Error"
msgstr "Parser Error"
#: js/dialogs/ImportPanel.js:525
msgid "You have to choose a calendar!"
msgstr "You have to choose a calendar!"
#: js/dialogs/ImportPanel.js:533
msgid "You have to choose at least one event to import!"
msgstr "You have to choose at least one event to import!"
#: js/dialogs/ImportPanel.js:582
msgid "Import failed: {0}"
msgstr "Import failed: {0}"
#: js/plugin.calendarimporter.js:76
msgid "Export Event"
msgstr "Export Event"
#: js/plugin.calendarimporter.js:146
msgid "Import to Calendar"
msgstr "Import to Calendar"
#: js/plugin.calendarimporter.js:183
msgid "Please wait"
msgstr "Please wait"
#: js/plugin.calendarimporter.js:184
msgid "Loading attachment..."
msgstr "Loading attachment..."
#: js/plugin.calendarimporter.js:185
msgid "Initializing..."
msgstr "Initializing..."
#. TRANSLATORS: {0} will be replaced by the percentage value (0-100)
#: js/plugin.calendarimporter.js:198
msgid "{0}% loaded"
msgstr "{0}% loaded"
#: js/plugin.calendarimporter.js:316
msgid "Calendarimporter Plugin"
msgstr "Calendarimporter Plugin"
#: js/settings/SettingsCalSyncWidget.js:64
msgid "Calendar Sync settings"
msgstr "Calendar Sync settings"
#: js/settings/SettingsWidget.js:45
msgid "Calendar Import/Export plugin settings"
msgstr "Calendar Import/Export plugin settings"
#: js/settings/SettingsWidget.js:52
msgid "Enable ical sync"
msgstr "Enable ical sync"
#: js/settings/SettingsWidget.js:73
msgid "Default calender"
msgstr "Default calender"
#: js/settings/SettingsWidget.js:92
msgid "Default timezone"
msgstr "Default timezone"
#: js/settings/SettingsWidget.js:151
msgid "Your WebApp needs to be reloaded to make the changes visible!"
msgstr "Your WebApp needs to be reloaded to make the changes visible!"
#: js/settings/SettingsWidget.js:153
msgid ""
"WebApp will automatically restart in order for these changes to take effect"
msgstr ""
"WebApp will automatically restart in order for these changes to take effect"
#: js/settings/SettingsWidget.js:157
msgid "Restart WebApp"
msgstr "Restart WebApp"
#: js/settings/SettingsWidget.js:162
msgid "Restart"
msgstr "Restart"
#: js/settings/SettingsWidget.js:187
msgid "Webapp is reloading, Please wait."
msgstr "Webapp is reloading, Please wait."
#: js/settings/dialogs/CalSyncEditContentPanel.js:49
msgid "ICAL Sync"
msgstr "ICAL Sync"
#: js/settings/dialogs/CalSyncEditPanel.js:56
msgid "Save"
msgstr "Save"
#: js/settings/dialogs/CalSyncEditPanel.js:139
msgid "ICAL Information"
msgstr "ICAL Information"
#: js/settings/dialogs/CalSyncEditPanel.js:148
msgid "ICS Url"
msgstr "ICS Url"
#: js/settings/dialogs/CalSyncEditPanel.js:156
msgid "Destination Calendar"
msgstr "Destination Calendar"
#: js/settings/dialogs/CalSyncEditPanel.js:171
msgid "Sync Intervall (minutes)"
msgstr "Sync Intervall (minutes)"
#: js/settings/dialogs/CalSyncEditPanel.js:180
msgid "Authentication (optional)"
msgstr "Authentication (optional)"
#: js/settings/dialogs/CalSyncEditPanel.js:187
msgid "Username"
msgstr "Username"
#: js/settings/dialogs/CalSyncEditPanel.js:194
msgid "Password"
msgstr "Password"
#: js/settings/ui/CalSyncGrid.js:45
msgid "No ICAL sync entry exists"
msgstr "No ICAL sync entry exists"
#: js/settings/ui/CalSyncGrid.js:97
msgid "ICS File"
msgstr "ICS File"
#: js/settings/ui/CalSyncGrid.js:102
msgid "Destination Calender"
msgstr "Destination Calender"
#: js/settings/ui/CalSyncGrid.js:107
msgid "Authentication"
msgstr "Authentication"
#: js/settings/ui/CalSyncGrid.js:112
msgid "Sync Intervall"
msgstr "Sync Intervall"
#: js/settings/ui/CalSyncGrid.js:116
msgid "Last Synchronisation"
msgstr "Last Synchronisation"
#: js/settings/ui/CalSyncGrid.js:140
msgid "Loading ics sync entries..."
msgstr "Loading ics sync entries..."
#: js/settings/ui/CalSyncGrid.js:159
msgid "Alert"
msgstr "Alert"
#: js/settings/ui/CalSyncGrid.js:159
msgid "Please select a ics sync entry."
msgstr "Please select a ics sync entry."
#: js/settings/ui/CalSyncPanel.js:68
msgid "Setup calendars you want to subscribe to."
msgstr "Setup calendars you want to subscribe to."
#: js/settings/ui/CalSyncPanel.js:96
msgid "Add"
msgstr "Add"
#: js/settings/ui/CalSyncPanel.js:105
msgid "Remove"
msgstr "Remove"
#: js/ui/ContextMenu.js:66
msgid "Import Calendar"
msgstr "Import Calendar"
#: js/ui/ContextMenu.js:78
msgid "Export Calendar"
msgstr "Export Calendar"
#. TRANSLATORS: {0} will be replaced by the number of contacts that will be exported
#: js/ui/ContextMenu.js:104
msgid "Calendar Export"
msgstr "Calendar Export"
#: js/ui/ContextMenu.js:104
msgid "Exporting {0} events. Please wait..."
msgstr "Exporting {0} events. Please wait..."
#. TRANSLATORS: Filename suffix for exported files
#: php/module.calendar.php:341
msgid "_events.ics"
msgstr "_events.ics"
#: php/module.calendar.php:344
msgid "No events found. Export skipped!"
msgstr "No events found. Export skipped!"
#: php/module.calendar.php:456
msgid "ICS file empty!"
msgstr "ICS file empty!"
#: php/module.calendar.php:594
msgid "Store could not be opened!"
msgstr "Store could not be opened!"
#: php/module.calendar.php:600
msgid "Wrong call, store and entryid have to be set!"
msgstr "Wrong call, store and entryid have to be set!"
#: php/module.calendar.php:634
msgid "No event in ics file"
msgstr "No event in ics file"
#: php/module.calendar.php:647
msgid "File could not be read by server"
msgstr "File could not be read by server"
#: php/upload.php:69
msgid ""
"File could not be moved to TMP path! Check plugin config and folder "
"permissions!"
msgstr ""
"File could not be moved to TMP path! Check plugin config and folder "
"permissions!"
#: php/upload.php:72
msgid "File could not be read by server, upload error!"
msgstr "File could not be read by server, upload error!"

View File

@ -0,0 +1,2 @@
English (US)
eng_USA

View File

@ -2,13 +2,16 @@
<!DOCTYPE plugin SYSTEM "manifest.dtd"> <!DOCTYPE plugin SYSTEM "manifest.dtd">
<plugin version="2"> <plugin version="2">
<info> <info>
<version>2.2.0</version> <version>2.2.1</version>
<name>calendarimporter</name> <name>calendarimporter</name>
<title>ICS Calendar Importer/Exporter</title> <title>ICS Calendar Importer/Exporter</title>
<author>Christoph Haas</author> <author>Christoph Haas</author>
<authorURL>http://www.sprinternet.at</authorURL> <authorURL>http://www.sprinternet.at</authorURL>
<description>Import or Export a ICS file to/from the zarafa calendar</description> <description>Import or Export a ICS file to/from the Kopano calendar</description>
</info> </info>
<translations>
<translationsdir>languages</translationsdir>
</translations>
<config> <config>
<configfile>config.php</configfile> <configfile>config.php</configfile>
</config> </config>

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* download.php, zarafa calendar to ics im/exporter * download.php, Kopano calendar to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2016 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
@ -27,7 +27,6 @@ class DownloadHandler
{ {
/** /**
* Download the given vcf file. * Download the given vcf file.
* @return bool
*/ */
public static function doDownload() public static function doDownload()
{ {

View File

@ -1,9 +1,9 @@
<?php <?php
/** /**
* module.calendar.php, zarafa calender to ics im/exporter * module.calendar.php, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2014 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -28,7 +28,7 @@ use Sabre\VObject;
class CalendarModule extends Module class CalendarModule extends Module
{ {
private $DEBUG = true; // enable error_log debugging private $DEBUG = false; // enable error_log debugging
private $busystates = null; private $busystates = null;
@ -166,12 +166,12 @@ class CalendarModule extends Module
return ""; return "";
} }
private function getDurationStringFromMintues($minutes, $pos = false) { private function getDurationStringFromMintues($minutes, $pos = false)
{
$pos = $pos === true ? "+" : "-"; $pos = $pos === true ? "+" : "-";
$str = $pos . "P"; $str = $pos . "P";
// variables for holding values // variables for holding values
$mins = intval($minutes); $mins = intval($minutes);
$hours = 0; $hours = 0;
@ -337,10 +337,11 @@ class CalendarModule extends Module
if (count($records) > 0) { if (count($records) > 0) {
$response['status'] = true; $response['status'] = true;
$response['download_token'] = $token; $response['download_token'] = $token;
$response['filename'] = count($records) . "events.ics"; // TRANSLATORS: Filename suffix for exported files
$response['filename'] = count($records) . dgettext("plugin_calendarimporter", "_events.ics");
} else { } else {
$response['status'] = false; $response['status'] = false;
$response['message'] = "No events found. Export skipped!"; $response['message'] = dgettext("plugin_calendarimporter", "No events found. Export skipped!");
} }
$this->addActionData($actionType, $response); $this->addActionData($actionType, $response);
@ -452,7 +453,7 @@ class CalendarModule extends Module
} else { } else {
$response['status'] = false; $response['status'] = false;
$response['count'] = 0; $response['count'] = 0;
$response['message'] = $error ? $error_msg : "ICS file empty!"; $response['message'] = $error ? $error_msg : dgettext("plugin_calendarimporter", "ICS file empty!");
} }
$this->addActionData($actionType, $response); $this->addActionData($actionType, $response);
@ -590,13 +591,13 @@ class CalendarModule extends Module
} }
} else { } else {
$response['status'] = false; $response['status'] = false;
$response['message'] = "Store could not be opened!"; $response['message'] = dgettext("plugin_calendarimporter", "Store could not be opened!");
$this->addActionData($actionType, $response); $this->addActionData($actionType, $response);
$GLOBALS["bus"]->addData($this->getResponseData()); $GLOBALS["bus"]->addData($this->getResponseData());
} }
} else { } else {
$response['status'] = false; $response['status'] = false;
$response['message'] = "Wrong call, store and entryid have to be set!"; $response['message'] = dgettext("plugin_calendarimporter", "Wrong call, store and entryid have to be set!");
$this->addActionData($actionType, $response); $this->addActionData($actionType, $response);
$GLOBALS["bus"]->addData($this->getResponseData()); $GLOBALS["bus"]->addData($this->getResponseData());
} }
@ -630,7 +631,7 @@ class CalendarModule extends Module
} else { } else {
if (count($parser->VEVENT) == 0) { if (count($parser->VEVENT) == 0) {
$response['status'] = false; $response['status'] = false;
$response['message'] = "No event in ics file"; $response['message'] = dgettext("plugin_calendarimporter", "No event in ics file");
} else { } else {
$response['status'] = true; $response['status'] = true;
$response['parsed_file'] = $actionData["ics_filepath"]; $response['parsed_file'] = $actionData["ics_filepath"];
@ -643,7 +644,7 @@ class CalendarModule extends Module
} }
} else { } else {
$response['status'] = false; $response['status'] = false;
$response['message'] = "File could not be read by server"; $response['message'] = dgettext("plugin_calendarimporter", "File could not be read by server");
} }
$this->addActionData($actionType, $response); $this->addActionData($actionType, $response);
@ -723,7 +724,3 @@ class CalendarModule extends Module
return $events; return $events;
} }
} }
;
?>

View File

@ -1,9 +1,9 @@
<?php <?php
/** /**
* plugin.calendarimporter.php, zarafa calender to ics im/exporter * plugin.calendarimporter.php, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2014 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -33,7 +33,9 @@ class Plugincalendarimporter extends Plugin
/** /**
* Constructor * Constructor
*/ */
function __construct() {} function __construct()
{
}
/** /**
* Function initializes the Plugin and registers all hooks * Function initializes the Plugin and registers all hooks
@ -90,5 +92,3 @@ class Plugincalendarimporter extends Plugin
)); ));
} }
} }
?>

View File

@ -1,9 +1,9 @@
<?php <?php
/** /**
* upload.php, zarafa calender to ics exporter * upload.php, Kopano calender to ics im/exporter
* *
* Author: Christoph Haas <christoph.h@sprinternet.at> * Author: Christoph Haas <christoph.h@sprinternet.at>
* Copyright (C) 2012-2014 Christoph Haas * Copyright (C) 2012-2016 Christoph Haas
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -30,7 +30,8 @@ ini_set('display_errors', '0');
* respond/echo JSON * respond/echo JSON
* @param $arr * @param $arr
*/ */
function respondJSON($arr) { function respondJSON($arr)
{
echo json_encode($arr); echo json_encode($arr);
} }
@ -39,7 +40,8 @@ function respondJSON($arr) {
* @param $length the lenght of the generated string * @param $length the lenght of the generated string
* @return string a random string * @return string a random string
*/ */
function randomstring($length = 6) { function randomstring($length = 6)
{
// $chars - all allowed charakters // $chars - all allowed charakters
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
@ -64,9 +66,8 @@ if(is_readable ($_FILES['icsdata']['tmp_name'])) {
if ($result) { if ($result) {
respondJSON(array('success' => true, 'ics_file' => $destpath)); respondJSON(array('success' => true, 'ics_file' => $destpath));
} else { } else {
respondJSON(array ('success'=>false,'error'=>"File could not be moved to TMP path! Check plugin config and folder permissions!")); respondJSON(array('success' => false, 'error' => dgettext("plugin_calendarimporter", "File could not be moved to TMP path! Check plugin config and folder permissions!")));
} }
} else { } else {
respondJSON(array ('success'=>false,'error'=>"File could not be read by server, upload error!")); respondJSON(array('success' => false, 'error' => dgettext("plugin_calendarimporter", "File could not be read by server, upload error!")));
} }
?>