Merge branch '2014.11-develop' into 2015.07
authorPhilipp Schüle <p.schuele@metaways.de>
Tue, 28 Jul 2015 13:46:47 +0000 (15:46 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Tue, 28 Jul 2015 13:46:47 +0000 (15:46 +0200)
Conflicts:
tine20/Calendar/Controller/Event.php
tine20/Calendar/Controller/MSEventFacade.php
tine20/Calendar/Frontend/iMIP.php
tine20/Calendar/Model/iMIP.php
tine20/Calendar/Setup/Update/Release8.php
tine20/Calendar/Setup/setup.xml
tine20/Calendar/js/EventEditDialog.js

Change-Id: Ie2a26449f2fc1239a8f5cfc23719f8521db8c6c7

1093 files changed:
scripts/packaging/Univention/debian/changelog
scripts/packaging/build-tine20-packages.sh
scripts/packaging/debian/changelog
scripts/packaging/fedora/SPECS/tine20.spec
tests/setup/Setup/JsonTest.php
tests/tine20/ActiveSync/AllTests.php
tests/tine20/ActiveSync/Server/PluginTests.php [new file with mode: 0644]
tests/tine20/AllTests.php
tests/tine20/Calendar/Frontend/files/invitation_cancel.ics
tests/tine20/Calendar/Frontend/iMIPTest.php
tests/tine20/Calendar/Model/AttenderTests.php
tests/tine20/Crm/Export/AbstractTest.php
tests/tine20/Felamimail/Controller/MessageTest.php
tests/tine20/Felamimail/Frontend/ActiveSyncTest.php
tests/tine20/Filemanager/Controller/DownloadLinkTests.php
tests/tine20/ServerTestCase.php
tests/tine20/ServerTestHelper.php [deleted file]
tests/tine20/TestCase.php
tests/tine20/TestHelper.php
tests/tine20/Tinebase/AllTests.php
tests/tine20/Tinebase/ConfigTest.php
tests/tine20/Tinebase/ContainerTest.php
tests/tine20/Tinebase/EmailUser/FactoryTest.php [new file with mode: 0644]
tests/tine20/Tinebase/Frontend/JsonTest.php
tests/tine20/Tinebase/Server/AllServerTests.php [new file with mode: 0644]
tests/tine20/Tinebase/Server/AllTests.php [new file with mode: 0644]
tests/tine20/Tinebase/Server/Plugin/AllTests.php [new file with mode: 0644]
tests/tine20/Tinebase/Server/Plugin/HttpTests.php [new file with mode: 0644]
tests/tine20/Tinebase/Server/Plugin/JsonTests.php [new file with mode: 0644]
tests/tine20/Tinebase/Server/Plugin/WebDAVTests.php [new file with mode: 0644]
tests/tine20/Voipmanager/AllTests.php
tests/tine20/Voipmanager/Server/PluginTests.php [new file with mode: 0644]
tests/tine20/Zend/Db/SelectTest.php
tests/tine20/bootstrap.php [new file with mode: 0644]
tests/tine20/phpunit.xml
tine20/ActiveSync/Config.php
tine20/ActiveSync/Server/Plugin.php [new file with mode: 0644]
tine20/ActiveSync/Setup/Update/Release8.php
tine20/ActiveSync/Setup/setup.xml
tine20/ActiveSync/translations/bg.po
tine20/ActiveSync/translations/ca.po
tine20/ActiveSync/translations/cs.po
tine20/ActiveSync/translations/da.po
tine20/ActiveSync/translations/de.po
tine20/ActiveSync/translations/el_GR.po
tine20/ActiveSync/translations/en_AU.po
tine20/ActiveSync/translations/en_NZ.po
tine20/ActiveSync/translations/es.po
tine20/ActiveSync/translations/es_MX.po
tine20/ActiveSync/translations/et.po
tine20/ActiveSync/translations/fa_IR.po
tine20/ActiveSync/translations/fi.po
tine20/ActiveSync/translations/fr.po
tine20/ActiveSync/translations/hr_HR.po
tine20/ActiveSync/translations/hu.po
tine20/ActiveSync/translations/it.po
tine20/ActiveSync/translations/ja.po
tine20/ActiveSync/translations/ko.po
tine20/ActiveSync/translations/ko_KR.po
tine20/ActiveSync/translations/lt.po
tine20/ActiveSync/translations/nb.po
tine20/ActiveSync/translations/nl_NL.po
tine20/ActiveSync/translations/pl.po
tine20/ActiveSync/translations/pt_BR.po
tine20/ActiveSync/translations/ro_RO.po [new file with mode: 0644]
tine20/ActiveSync/translations/ru.po
tine20/ActiveSync/translations/sk.po
tine20/ActiveSync/translations/sl.po
tine20/ActiveSync/translations/sq.po
tine20/ActiveSync/translations/sv_SE.po
tine20/ActiveSync/translations/th.po
tine20/ActiveSync/translations/tr_TR.po
tine20/ActiveSync/translations/vi.po
tine20/ActiveSync/translations/vi_VN.po
tine20/ActiveSync/translations/zh_CN.po
tine20/ActiveSync/translations/zh_TW.po
tine20/Addressbook/Convert/Contact/VCard/CardDAVSync.php [new file with mode: 0755]
tine20/Addressbook/Convert/Contact/VCard/DavDroid.php [new file with mode: 0644]
tine20/Addressbook/Convert/Contact/VCard/Factory.php
tine20/Addressbook/Setup/Update/Release8.php
tine20/Addressbook/Setup/setup.xml
tine20/Addressbook/js/ContactEditDialog.js
tine20/Addressbook/translations/bg.po
tine20/Addressbook/translations/ca.po
tine20/Addressbook/translations/cs.po
tine20/Addressbook/translations/da.po
tine20/Addressbook/translations/de.po
tine20/Addressbook/translations/el_GR.po
tine20/Addressbook/translations/en_AU.po
tine20/Addressbook/translations/en_NZ.po
tine20/Addressbook/translations/es.po
tine20/Addressbook/translations/es_MX.po
tine20/Addressbook/translations/et.po
tine20/Addressbook/translations/fa_IR.po
tine20/Addressbook/translations/fi.po
tine20/Addressbook/translations/fr.po
tine20/Addressbook/translations/hr_HR.po
tine20/Addressbook/translations/hu.po
tine20/Addressbook/translations/it.po
tine20/Addressbook/translations/ja.po
tine20/Addressbook/translations/ko.po
tine20/Addressbook/translations/ko_KR.po
tine20/Addressbook/translations/lt.po
tine20/Addressbook/translations/nb.po
tine20/Addressbook/translations/nl_NL.po
tine20/Addressbook/translations/pl.po
tine20/Addressbook/translations/pt_BR.po
tine20/Addressbook/translations/ro_RO.po [new file with mode: 0644]
tine20/Addressbook/translations/ru.po
tine20/Addressbook/translations/sk.po
tine20/Addressbook/translations/sl.po
tine20/Addressbook/translations/sq.po
tine20/Addressbook/translations/sv_SE.po
tine20/Addressbook/translations/template.pot
tine20/Addressbook/translations/th.po
tine20/Addressbook/translations/tr_TR.po
tine20/Addressbook/translations/vi.po
tine20/Addressbook/translations/vi_VN.po
tine20/Addressbook/translations/zh_CN.po
tine20/Addressbook/translations/zh_TW.po
tine20/Admin/Setup/Update/Release8.php
tine20/Admin/Setup/setup.xml
tine20/Admin/js/container/EditDialog.js
tine20/Admin/translations/bg.po
tine20/Admin/translations/ca.po
tine20/Admin/translations/cs.po
tine20/Admin/translations/da.po
tine20/Admin/translations/el_GR.po
tine20/Admin/translations/en_AU.po
tine20/Admin/translations/en_NZ.po
tine20/Admin/translations/es.po
tine20/Admin/translations/es_MX.po
tine20/Admin/translations/et.po
tine20/Admin/translations/fa_IR.po
tine20/Admin/translations/fi.po
tine20/Admin/translations/fr.po
tine20/Admin/translations/hr_HR.po
tine20/Admin/translations/hu.po
tine20/Admin/translations/it.po
tine20/Admin/translations/ja.po
tine20/Admin/translations/ko.po
tine20/Admin/translations/ko_KR.po
tine20/Admin/translations/lt.po
tine20/Admin/translations/nb.po
tine20/Admin/translations/nl_NL.po
tine20/Admin/translations/pl.po
tine20/Admin/translations/pt_BR.po
tine20/Admin/translations/ro_RO.po [new file with mode: 0644]
tine20/Admin/translations/ru.po
tine20/Admin/translations/sk.po
tine20/Admin/translations/sl.po
tine20/Admin/translations/sq.po
tine20/Admin/translations/sv_SE.po
tine20/Admin/translations/th.po
tine20/Admin/translations/tr_TR.po
tine20/Admin/translations/vi.po
tine20/Admin/translations/vi_VN.po
tine20/Admin/translations/zh_CN.po
tine20/Admin/translations/zh_TW.po
tine20/Calendar/Backend/Sql.php
tine20/Calendar/Calendar.jsb2
tine20/Calendar/Config.php
tine20/Calendar/Controller/Event.php
tine20/Calendar/Controller/MSEventFacade.php
tine20/Calendar/Convert/Event/Json.php
tine20/Calendar/Convert/Event/VCalendar/Abstract.php
tine20/Calendar/Frontend/Cli.php
tine20/Calendar/Frontend/iMIP.php
tine20/Calendar/Model/Attender.php
tine20/Calendar/Model/iMIP.php
tine20/Calendar/Setup/Update/Release8.php
tine20/Calendar/Setup/setup.xml
tine20/Calendar/css/Calendar.css
tine20/Calendar/css/print.css
tine20/Calendar/css/yearviewpanel.css [new file with mode: 0644]
tine20/Calendar/js/EventEditDialog.js
tine20/Calendar/js/EventUI.js
tine20/Calendar/js/MainScreenCenterPanel.js
tine20/Calendar/js/PagingToolbar.js
tine20/Calendar/js/Printer/Base.js
tine20/Calendar/js/Printer/YearView.js [new file with mode: 0644]
tine20/Calendar/js/ResourceEditDialog.js
tine20/Calendar/js/YearView.js [new file with mode: 0644]
tine20/Calendar/js/iMIPDetailsPanel.js
tine20/Calendar/translations/bg.po
tine20/Calendar/translations/ca.po
tine20/Calendar/translations/cs.po
tine20/Calendar/translations/da.po
tine20/Calendar/translations/de.po
tine20/Calendar/translations/el_GR.po
tine20/Calendar/translations/en_AU.po
tine20/Calendar/translations/en_NZ.po
tine20/Calendar/translations/es.po
tine20/Calendar/translations/es_MX.po
tine20/Calendar/translations/et.po
tine20/Calendar/translations/fa_IR.po
tine20/Calendar/translations/fi.po
tine20/Calendar/translations/fr.po
tine20/Calendar/translations/hr_HR.po
tine20/Calendar/translations/hu.po
tine20/Calendar/translations/it.po
tine20/Calendar/translations/ja.po
tine20/Calendar/translations/ko.po
tine20/Calendar/translations/ko_KR.po
tine20/Calendar/translations/lt.po
tine20/Calendar/translations/nb.po
tine20/Calendar/translations/nl_NL.po
tine20/Calendar/translations/pl.po
tine20/Calendar/translations/pt_BR.po
tine20/Calendar/translations/ro_RO.po [new file with mode: 0644]
tine20/Calendar/translations/ru.po
tine20/Calendar/translations/sk.po
tine20/Calendar/translations/sl.po
tine20/Calendar/translations/sq.po
tine20/Calendar/translations/sv_SE.po
tine20/Calendar/translations/template.pot
tine20/Calendar/translations/th.po
tine20/Calendar/translations/tr_TR.po
tine20/Calendar/translations/vi.po
tine20/Calendar/translations/vi_VN.po
tine20/Calendar/translations/zh_CN.po
tine20/Calendar/translations/zh_TW.po
tine20/Courses/Setup/Update/Release8.php
tine20/Courses/Setup/setup.xml
tine20/Courses/js/CourseEditDialog.js
tine20/Courses/translations/bg.po
tine20/Courses/translations/ca.po
tine20/Courses/translations/cs.po
tine20/Courses/translations/da.po
tine20/Courses/translations/de.po
tine20/Courses/translations/el_GR.po
tine20/Courses/translations/en_AU.po
tine20/Courses/translations/en_NZ.po
tine20/Courses/translations/es.po
tine20/Courses/translations/es_MX.po
tine20/Courses/translations/et.po
tine20/Courses/translations/fa_IR.po
tine20/Courses/translations/fi.po
tine20/Courses/translations/fr.po
tine20/Courses/translations/hr_HR.po
tine20/Courses/translations/hu.po
tine20/Courses/translations/it.po
tine20/Courses/translations/ja.po
tine20/Courses/translations/ko.po
tine20/Courses/translations/ko_KR.po
tine20/Courses/translations/lt.po
tine20/Courses/translations/nb.po
tine20/Courses/translations/nl_NL.po
tine20/Courses/translations/pl.po
tine20/Courses/translations/pt_BR.po
tine20/Courses/translations/ro_RO.po [new file with mode: 0644]
tine20/Courses/translations/ru.po
tine20/Courses/translations/sk.po
tine20/Courses/translations/sl.po
tine20/Courses/translations/sq.po
tine20/Courses/translations/sv_SE.po
tine20/Courses/translations/template.pot
tine20/Courses/translations/th.po
tine20/Courses/translations/tr_TR.po
tine20/Courses/translations/vi.po
tine20/Courses/translations/vi_VN.po
tine20/Courses/translations/zh_CN.po
tine20/Courses/translations/zh_TW.po
tine20/Crm/Setup/Update/Release8.php
tine20/Crm/Setup/setup.xml
tine20/Crm/js/LeadEditDialog.js
tine20/Crm/translations/bg.po
tine20/Crm/translations/ca.po
tine20/Crm/translations/cs.po
tine20/Crm/translations/da.po
tine20/Crm/translations/de.po
tine20/Crm/translations/el_GR.po
tine20/Crm/translations/en_AU.po
tine20/Crm/translations/en_NZ.po
tine20/Crm/translations/es.po
tine20/Crm/translations/es_MX.po
tine20/Crm/translations/et.po
tine20/Crm/translations/fa_IR.po
tine20/Crm/translations/fi.po
tine20/Crm/translations/fr.po
tine20/Crm/translations/hr_HR.po
tine20/Crm/translations/hu.po
tine20/Crm/translations/it.po
tine20/Crm/translations/ja.po
tine20/Crm/translations/ko.po
tine20/Crm/translations/ko_KR.po
tine20/Crm/translations/lt.po
tine20/Crm/translations/nb.po
tine20/Crm/translations/nl_NL.po
tine20/Crm/translations/pl.po
tine20/Crm/translations/pt_BR.po
tine20/Crm/translations/ro_RO.po [new file with mode: 0644]
tine20/Crm/translations/ru.po
tine20/Crm/translations/sk.po
tine20/Crm/translations/sl.po
tine20/Crm/translations/sq.po
tine20/Crm/translations/sv_SE.po
tine20/Crm/translations/template.pot
tine20/Crm/translations/th.po
tine20/Crm/translations/tr_TR.po
tine20/Crm/translations/vi.po
tine20/Crm/translations/vi_VN.po
tine20/Crm/translations/zh_CN.po
tine20/Crm/translations/zh_TW.po
tine20/ExampleApplication/js/ExampleRecordEditDialog.js
tine20/Felamimail/Controller/Message.php
tine20/Felamimail/Frontend/ActiveSync.php
tine20/Felamimail/Message.php
tine20/Felamimail/Setup/Update/Release8.php
tine20/Felamimail/Setup/setup.xml
tine20/Felamimail/js/AccountEditDialog.js
tine20/Felamimail/js/GridPanelHook.js
tine20/Felamimail/translations/bg.po
tine20/Felamimail/translations/ca.po
tine20/Felamimail/translations/cs.po
tine20/Felamimail/translations/da.po
tine20/Felamimail/translations/de.po
tine20/Felamimail/translations/el_GR.po
tine20/Felamimail/translations/en_AU.po
tine20/Felamimail/translations/en_NZ.po
tine20/Felamimail/translations/es.po
tine20/Felamimail/translations/es_MX.po
tine20/Felamimail/translations/et.po
tine20/Felamimail/translations/fa_IR.po
tine20/Felamimail/translations/fi.po
tine20/Felamimail/translations/fr.po
tine20/Felamimail/translations/hr_HR.po
tine20/Felamimail/translations/hu.po
tine20/Felamimail/translations/it.po
tine20/Felamimail/translations/ja.po
tine20/Felamimail/translations/ko.po
tine20/Felamimail/translations/ko_KR.po
tine20/Felamimail/translations/lt.po
tine20/Felamimail/translations/nb.po
tine20/Felamimail/translations/nl_NL.po
tine20/Felamimail/translations/pl.po
tine20/Felamimail/translations/pt_BR.po
tine20/Felamimail/translations/ro_RO.po [new file with mode: 0644]
tine20/Felamimail/translations/ru.po
tine20/Felamimail/translations/sk.po
tine20/Felamimail/translations/sl.po
tine20/Felamimail/translations/sq.po
tine20/Felamimail/translations/sv_SE.po
tine20/Felamimail/translations/template.pot
tine20/Felamimail/translations/th.po
tine20/Felamimail/translations/tr_TR.po
tine20/Felamimail/translations/vi.po
tine20/Felamimail/translations/vi_VN.po
tine20/Felamimail/translations/zh_CN.po
tine20/Felamimail/translations/zh_TW.po
tine20/Filemanager/Setup/Update/Release8.php
tine20/Filemanager/Setup/setup.xml
tine20/Filemanager/js/NodeEditDialog.js
tine20/Filemanager/translations/bg.po
tine20/Filemanager/translations/ca.po
tine20/Filemanager/translations/cs.po
tine20/Filemanager/translations/da.po
tine20/Filemanager/translations/de.po
tine20/Filemanager/translations/el_GR.po
tine20/Filemanager/translations/en_AU.po
tine20/Filemanager/translations/en_NZ.po
tine20/Filemanager/translations/es.po
tine20/Filemanager/translations/es_MX.po
tine20/Filemanager/translations/et.po
tine20/Filemanager/translations/fa_IR.po
tine20/Filemanager/translations/fi.po
tine20/Filemanager/translations/fr.po
tine20/Filemanager/translations/hr_HR.po
tine20/Filemanager/translations/hu.po
tine20/Filemanager/translations/it.po
tine20/Filemanager/translations/ja.po
tine20/Filemanager/translations/ko.po
tine20/Filemanager/translations/ko_KR.po
tine20/Filemanager/translations/lt.po
tine20/Filemanager/translations/nb.po
tine20/Filemanager/translations/nl_NL.po
tine20/Filemanager/translations/pl.po
tine20/Filemanager/translations/pt_BR.po
tine20/Filemanager/translations/ro_RO.po [new file with mode: 0644]
tine20/Filemanager/translations/ru.po
tine20/Filemanager/translations/sk.po
tine20/Filemanager/translations/sl.po
tine20/Filemanager/translations/sq.po
tine20/Filemanager/translations/sv_SE.po
tine20/Filemanager/translations/template.pot
tine20/Filemanager/translations/th.po
tine20/Filemanager/translations/tr_TR.po
tine20/Filemanager/translations/vi.po
tine20/Filemanager/translations/vi_VN.po
tine20/Filemanager/translations/zh_CN.po
tine20/Filemanager/translations/zh_TW.po
tine20/HumanResources/Setup/Update/Release8.php
tine20/HumanResources/Setup/setup.xml
tine20/HumanResources/js/ContractEditDialog.js
tine20/HumanResources/js/EmployeeEditDialog.js
tine20/HumanResources/js/ExtraFreeTimeEditDialog.js
tine20/HumanResources/translations/bg.po
tine20/HumanResources/translations/ca.po
tine20/HumanResources/translations/cs.po
tine20/HumanResources/translations/da.po
tine20/HumanResources/translations/de.po
tine20/HumanResources/translations/el_GR.po
tine20/HumanResources/translations/en_AU.po
tine20/HumanResources/translations/en_NZ.po
tine20/HumanResources/translations/es.po
tine20/HumanResources/translations/es_MX.po
tine20/HumanResources/translations/et.po
tine20/HumanResources/translations/fa_IR.po
tine20/HumanResources/translations/fi.po
tine20/HumanResources/translations/fr.po
tine20/HumanResources/translations/hr_HR.po
tine20/HumanResources/translations/hu.po
tine20/HumanResources/translations/it.po
tine20/HumanResources/translations/ja.po
tine20/HumanResources/translations/ko.po
tine20/HumanResources/translations/ko_KR.po
tine20/HumanResources/translations/lt.po
tine20/HumanResources/translations/nb.po
tine20/HumanResources/translations/nl_NL.po
tine20/HumanResources/translations/pl.po
tine20/HumanResources/translations/pt_BR.po
tine20/HumanResources/translations/ro_RO.po [new file with mode: 0644]
tine20/HumanResources/translations/ru.po
tine20/HumanResources/translations/sk.po
tine20/HumanResources/translations/sl.po
tine20/HumanResources/translations/sq.po
tine20/HumanResources/translations/sv_SE.po
tine20/HumanResources/translations/template.pot
tine20/HumanResources/translations/th.po
tine20/HumanResources/translations/tr_TR.po
tine20/HumanResources/translations/vi.po
tine20/HumanResources/translations/vi_VN.po
tine20/HumanResources/translations/zh_CN.po
tine20/HumanResources/translations/zh_TW.po
tine20/Inventory/Setup/Update/Release8.php [new file with mode: 0644]
tine20/Inventory/Setup/setup.xml
tine20/Inventory/js/InventoryItemEditDialog.js
tine20/Inventory/translations/bg.po
tine20/Inventory/translations/ca.po
tine20/Inventory/translations/cs.po
tine20/Inventory/translations/da.po
tine20/Inventory/translations/de.po
tine20/Inventory/translations/el_GR.po
tine20/Inventory/translations/en_AU.po
tine20/Inventory/translations/en_NZ.po
tine20/Inventory/translations/es.po
tine20/Inventory/translations/es_MX.po
tine20/Inventory/translations/et.po
tine20/Inventory/translations/fa_IR.po
tine20/Inventory/translations/fi.po
tine20/Inventory/translations/fr.po
tine20/Inventory/translations/hr_HR.po
tine20/Inventory/translations/hu.po
tine20/Inventory/translations/it.po
tine20/Inventory/translations/ja.po
tine20/Inventory/translations/ko.po
tine20/Inventory/translations/ko_KR.po
tine20/Inventory/translations/lt.po
tine20/Inventory/translations/nb.po
tine20/Inventory/translations/nl_NL.po
tine20/Inventory/translations/pl.po
tine20/Inventory/translations/pt_BR.po
tine20/Inventory/translations/ro_RO.po [new file with mode: 0644]
tine20/Inventory/translations/ru.po
tine20/Inventory/translations/sk.po
tine20/Inventory/translations/sl.po
tine20/Inventory/translations/sq.po
tine20/Inventory/translations/sv_SE.po
tine20/Inventory/translations/template.pot
tine20/Inventory/translations/th.po
tine20/Inventory/translations/tr_TR.po
tine20/Inventory/translations/vi.po
tine20/Inventory/translations/vi_VN.po
tine20/Inventory/translations/zh_CN.po
tine20/Inventory/translations/zh_TW.po
tine20/Phone/Setup/Update/Release8.php [new file with mode: 0644]
tine20/Phone/Setup/setup.xml
tine20/Phone/translations/es.po
tine20/Phone/translations/ro_RO.po [new file with mode: 0644]
tine20/Projects/Setup/Update/Release8.php [new file with mode: 0644]
tine20/Projects/Setup/setup.xml
tine20/Projects/js/ProjectEditDialog.js
tine20/Projects/translations/bg.po
tine20/Projects/translations/ca.po
tine20/Projects/translations/cs.po
tine20/Projects/translations/da.po
tine20/Projects/translations/de.po
tine20/Projects/translations/el_GR.po
tine20/Projects/translations/en_AU.po
tine20/Projects/translations/en_NZ.po
tine20/Projects/translations/es.po
tine20/Projects/translations/es_MX.po
tine20/Projects/translations/et.po
tine20/Projects/translations/fa_IR.po
tine20/Projects/translations/fi.po
tine20/Projects/translations/fr.po
tine20/Projects/translations/hr_HR.po
tine20/Projects/translations/hu.po
tine20/Projects/translations/it.po
tine20/Projects/translations/ja.po
tine20/Projects/translations/ko.po
tine20/Projects/translations/ko_KR.po
tine20/Projects/translations/lt.po
tine20/Projects/translations/nb.po
tine20/Projects/translations/nl_NL.po
tine20/Projects/translations/pl.po
tine20/Projects/translations/pt_BR.po
tine20/Projects/translations/ro_RO.po [new file with mode: 0644]
tine20/Projects/translations/ru.po
tine20/Projects/translations/sk.po
tine20/Projects/translations/sl.po
tine20/Projects/translations/sq.po
tine20/Projects/translations/sv_SE.po
tine20/Projects/translations/template.pot
tine20/Projects/translations/th.po
tine20/Projects/translations/tr_TR.po
tine20/Projects/translations/vi.po
tine20/Projects/translations/vi_VN.po
tine20/Projects/translations/zh_CN.po
tine20/Projects/translations/zh_TW.po
tine20/RELEASENOTES
tine20/Sales/Setup/Update/Release8.php
tine20/Sales/Setup/setup.xml
tine20/Sales/js/AddressEditDialog.js
tine20/Sales/js/ContractEditDialog.js
tine20/Sales/js/CustomerEditDialog.js
tine20/Sales/js/InvoiceEditDialog.js
tine20/Sales/js/OfferEditDialog.js
tine20/Sales/js/OrderConfirmationEditDialog.js
tine20/Sales/js/ProductEditDialog.js
tine20/Sales/js/PurchaseInvoiceEditDialog.js
tine20/Sales/js/SupplierEditDialog.js
tine20/Sales/translations/bg.po
tine20/Sales/translations/ca.po
tine20/Sales/translations/cs.po
tine20/Sales/translations/da.po
tine20/Sales/translations/de.po
tine20/Sales/translations/el_GR.po
tine20/Sales/translations/en_AU.po
tine20/Sales/translations/en_NZ.po
tine20/Sales/translations/es.po
tine20/Sales/translations/es_MX.po
tine20/Sales/translations/et.po
tine20/Sales/translations/fa_IR.po
tine20/Sales/translations/fi.po
tine20/Sales/translations/fr.po
tine20/Sales/translations/hr_HR.po
tine20/Sales/translations/hu.po
tine20/Sales/translations/it.po
tine20/Sales/translations/ja.po
tine20/Sales/translations/ko.po
tine20/Sales/translations/ko_KR.po
tine20/Sales/translations/lt.po
tine20/Sales/translations/nb.po
tine20/Sales/translations/nl_NL.po
tine20/Sales/translations/pl.po
tine20/Sales/translations/pt_BR.po
tine20/Sales/translations/ro_RO.po [new file with mode: 0644]
tine20/Sales/translations/ru.po
tine20/Sales/translations/sk.po
tine20/Sales/translations/sl.po
tine20/Sales/translations/sq.po
tine20/Sales/translations/sv_SE.po
tine20/Sales/translations/template.pot
tine20/Sales/translations/th.po
tine20/Sales/translations/tr_TR.po
tine20/Sales/translations/vi.po
tine20/Sales/translations/vi_VN.po
tine20/Sales/translations/zh_CN.po
tine20/Sales/translations/zh_TW.po
tine20/Setup/Backend/Mysql.php
tine20/Setup/Core.php
tine20/Setup/js/ConfigManagerPanel.js
tine20/Setup/translations/bg.po
tine20/Setup/translations/ca.po
tine20/Setup/translations/cs.po
tine20/Setup/translations/da.po
tine20/Setup/translations/de.po
tine20/Setup/translations/el_GR.po
tine20/Setup/translations/en_AU.po
tine20/Setup/translations/en_NZ.po
tine20/Setup/translations/es.po
tine20/Setup/translations/es_MX.po
tine20/Setup/translations/et.po
tine20/Setup/translations/fa_IR.po
tine20/Setup/translations/fi.po
tine20/Setup/translations/fr.po
tine20/Setup/translations/hr_HR.po
tine20/Setup/translations/hu.po
tine20/Setup/translations/it.po
tine20/Setup/translations/ja.po
tine20/Setup/translations/ko.po
tine20/Setup/translations/ko_KR.po
tine20/Setup/translations/lt.po
tine20/Setup/translations/nb.po
tine20/Setup/translations/nl_NL.po
tine20/Setup/translations/pl.po
tine20/Setup/translations/pt_BR.po
tine20/Setup/translations/ro_RO.po [new file with mode: 0644]
tine20/Setup/translations/ru.po
tine20/Setup/translations/sk.po
tine20/Setup/translations/sl.po
tine20/Setup/translations/sq.po
tine20/Setup/translations/sv_SE.po
tine20/Setup/translations/template.pot
tine20/Setup/translations/th.po
tine20/Setup/translations/tr_TR.po
tine20/Setup/translations/vi.po
tine20/Setup/translations/vi_VN.po
tine20/Setup/translations/zh_CN.po
tine20/Setup/translations/zh_TW.po
tine20/SimpleFAQ/js/FaqEditDialog.js
tine20/SimpleFAQ/js/SimpleFAQ.js
tine20/SimpleFAQ/translations/bg.po
tine20/SimpleFAQ/translations/ca.po
tine20/SimpleFAQ/translations/cs.po
tine20/SimpleFAQ/translations/da.po
tine20/SimpleFAQ/translations/de.po
tine20/SimpleFAQ/translations/el_GR.po
tine20/SimpleFAQ/translations/en_AU.po
tine20/SimpleFAQ/translations/en_NZ.po
tine20/SimpleFAQ/translations/es.po
tine20/SimpleFAQ/translations/es_MX.po
tine20/SimpleFAQ/translations/et.po
tine20/SimpleFAQ/translations/fa_IR.po
tine20/SimpleFAQ/translations/fi.po
tine20/SimpleFAQ/translations/fr.po
tine20/SimpleFAQ/translations/hr_HR.po
tine20/SimpleFAQ/translations/hu.po
tine20/SimpleFAQ/translations/it.po
tine20/SimpleFAQ/translations/ja.po
tine20/SimpleFAQ/translations/ko.po
tine20/SimpleFAQ/translations/ko_KR.po
tine20/SimpleFAQ/translations/lt.po
tine20/SimpleFAQ/translations/nb.po
tine20/SimpleFAQ/translations/nl_NL.po
tine20/SimpleFAQ/translations/pl.po
tine20/SimpleFAQ/translations/pt_BR.po
tine20/SimpleFAQ/translations/ro_RO.po [new file with mode: 0644]
tine20/SimpleFAQ/translations/ru.po
tine20/SimpleFAQ/translations/sk.po
tine20/SimpleFAQ/translations/sl.po
tine20/SimpleFAQ/translations/sq.po
tine20/SimpleFAQ/translations/sv_SE.po
tine20/SimpleFAQ/translations/template.pot
tine20/SimpleFAQ/translations/th.po
tine20/SimpleFAQ/translations/tr_TR.po
tine20/SimpleFAQ/translations/vi.po
tine20/SimpleFAQ/translations/vi_VN.po
tine20/SimpleFAQ/translations/zh_CN.po
tine20/SimpleFAQ/translations/zh_TW.po
tine20/Sipgate/translations/ro_RO.po [new file with mode: 0644]
tine20/Tasks/Setup/Update/Release8.php
tine20/Tasks/Setup/setup.xml
tine20/Tasks/js/TaskEditDialog.js
tine20/Tasks/translations/bg.po
tine20/Tasks/translations/ca.po
tine20/Tasks/translations/cs.po
tine20/Tasks/translations/da.po
tine20/Tasks/translations/de.po
tine20/Tasks/translations/el_GR.po
tine20/Tasks/translations/en_AU.po
tine20/Tasks/translations/en_NZ.po
tine20/Tasks/translations/es.po
tine20/Tasks/translations/es_MX.po
tine20/Tasks/translations/et.po
tine20/Tasks/translations/fa_IR.po
tine20/Tasks/translations/fi.po
tine20/Tasks/translations/fr.po
tine20/Tasks/translations/hr_HR.po
tine20/Tasks/translations/hu.po
tine20/Tasks/translations/it.po
tine20/Tasks/translations/ja.po
tine20/Tasks/translations/ko.po
tine20/Tasks/translations/ko_KR.po
tine20/Tasks/translations/lt.po
tine20/Tasks/translations/nb.po
tine20/Tasks/translations/nl_NL.po
tine20/Tasks/translations/pl.po
tine20/Tasks/translations/pt_BR.po
tine20/Tasks/translations/ro_RO.po [new file with mode: 0644]
tine20/Tasks/translations/ru.po
tine20/Tasks/translations/sk.po
tine20/Tasks/translations/sl.po
tine20/Tasks/translations/sq.po
tine20/Tasks/translations/sv_SE.po
tine20/Tasks/translations/template.pot
tine20/Tasks/translations/th.po
tine20/Tasks/translations/tr_TR.po
tine20/Tasks/translations/vi.po
tine20/Tasks/translations/vi_VN.po
tine20/Tasks/translations/zh_CN.po
tine20/Tasks/translations/zh_TW.po
tine20/Timetracker/Setup/Update/Release8.php
tine20/Timetracker/Setup/setup.xml
tine20/Timetracker/js/TimeaccountEditDialog.js
tine20/Timetracker/js/TimeaccountGridPanel.js
tine20/Timetracker/js/TimesheetEditDialog.js
tine20/Timetracker/translations/bg.po
tine20/Timetracker/translations/ca.po
tine20/Timetracker/translations/cs.po
tine20/Timetracker/translations/da.po
tine20/Timetracker/translations/de.po
tine20/Timetracker/translations/el_GR.po
tine20/Timetracker/translations/en_AU.po
tine20/Timetracker/translations/en_NZ.po
tine20/Timetracker/translations/es.po
tine20/Timetracker/translations/es_MX.po
tine20/Timetracker/translations/et.po
tine20/Timetracker/translations/fa_IR.po
tine20/Timetracker/translations/fi.po
tine20/Timetracker/translations/fr.po
tine20/Timetracker/translations/hr_HR.po
tine20/Timetracker/translations/hu.po
tine20/Timetracker/translations/it.po
tine20/Timetracker/translations/ja.po
tine20/Timetracker/translations/ko.po
tine20/Timetracker/translations/ko_KR.po
tine20/Timetracker/translations/lt.po
tine20/Timetracker/translations/nb.po
tine20/Timetracker/translations/nl_NL.po
tine20/Timetracker/translations/pl.po
tine20/Timetracker/translations/pt_BR.po
tine20/Timetracker/translations/ro_RO.po [new file with mode: 0644]
tine20/Timetracker/translations/ru.po
tine20/Timetracker/translations/sk.po
tine20/Timetracker/translations/sl.po
tine20/Timetracker/translations/sq.po
tine20/Timetracker/translations/sv_SE.po
tine20/Timetracker/translations/template.pot
tine20/Timetracker/translations/th.po
tine20/Timetracker/translations/tr_TR.po
tine20/Timetracker/translations/vi.po
tine20/Timetracker/translations/vi_VN.po
tine20/Timetracker/translations/zh_CN.po
tine20/Timetracker/translations/zh_TW.po
tine20/Tinebase/Acl/Roles.php
tine20/Tinebase/Application.php
tine20/Tinebase/Backend/Sql/Abstract.php
tine20/Tinebase/Backend/Sql/Adapter/Pdo/Pgsql.php
tine20/Tinebase/Backend/Sql/Command/Pgsql.php
tine20/Tinebase/Cache/PerRequest.php
tine20/Tinebase/Config.php
tine20/Tinebase/Config/Abstract.php
tine20/Tinebase/Container.php
tine20/Tinebase/Controller/Record/Abstract.php
tine20/Tinebase/Core.php
tine20/Tinebase/Db/Table.php
tine20/Tinebase/EmailUser/Factory.php [new file with mode: 0644]
tine20/Tinebase/Frontend/Http.php
tine20/Tinebase/Frontend/Json.php
tine20/Tinebase/Helper.php
tine20/Tinebase/Log.php
tine20/Tinebase/Server/Plugin/Cli.php [new file with mode: 0644]
tine20/Tinebase/Server/Plugin/Http.php [new file with mode: 0644]
tine20/Tinebase/Server/Plugin/Interface.php [new file with mode: 0644]
tine20/Tinebase/Server/Plugin/Json.php [new file with mode: 0644]
tine20/Tinebase/Server/Plugin/WebDAV.php [new file with mode: 0644]
tine20/Tinebase/Setup/Update/Release8.php
tine20/Tinebase/Setup/setup.xml
tine20/Tinebase/Timemachine/ModificationLog.php
tine20/Tinebase/Tinebase.jsb2
tine20/Tinebase/View.php
tine20/Tinebase/WebDav/Collection/AbstractContainerTree.php
tine20/Tinebase/js/extFixes.js
tine20/Tinebase/js/widgets/ActivitiesGridPanel.js [new file with mode: 0644]
tine20/Tinebase/js/widgets/ActivitiesPanel.js
tine20/Tinebase/js/widgets/container/GrantsDialog.js
tine20/Tinebase/js/widgets/dialog/EditDialog.js
tine20/Tinebase/translations/bg.po
tine20/Tinebase/translations/ca.po
tine20/Tinebase/translations/cs.po
tine20/Tinebase/translations/da.po
tine20/Tinebase/translations/de.po
tine20/Tinebase/translations/el_GR.po
tine20/Tinebase/translations/en_AU.po
tine20/Tinebase/translations/en_NZ.po
tine20/Tinebase/translations/es.po
tine20/Tinebase/translations/es_MX.po
tine20/Tinebase/translations/et.po
tine20/Tinebase/translations/fa_IR.po
tine20/Tinebase/translations/fi.po
tine20/Tinebase/translations/fr.po
tine20/Tinebase/translations/hr_HR.po
tine20/Tinebase/translations/hu.po
tine20/Tinebase/translations/it.po
tine20/Tinebase/translations/ja.po
tine20/Tinebase/translations/ko.po
tine20/Tinebase/translations/ko_KR.po
tine20/Tinebase/translations/lt.po
tine20/Tinebase/translations/nb.po
tine20/Tinebase/translations/nl_NL.po
tine20/Tinebase/translations/pl.po
tine20/Tinebase/translations/pt_BR.po
tine20/Tinebase/translations/ro_RO.po [new file with mode: 0644]
tine20/Tinebase/translations/ru.po
tine20/Tinebase/translations/sk.po
tine20/Tinebase/translations/sl.po
tine20/Tinebase/translations/sq.po
tine20/Tinebase/translations/sv_SE.po
tine20/Tinebase/translations/template.pot
tine20/Tinebase/translations/th.po
tine20/Tinebase/translations/tr_TR.po
tine20/Tinebase/translations/vi.po
tine20/Tinebase/translations/vi_VN.po
tine20/Tinebase/translations/zh_CN.po
tine20/Tinebase/translations/zh_TW.po
tine20/Voipmanager/Config.php [new file with mode: 0644]
tine20/Voipmanager/Server/Plugin.php [new file with mode: 0644]
tine20/Voipmanager/Setup/Update/Release8.php
tine20/Voipmanager/Setup/setup.xml
tine20/Voipmanager/translations/de.po
tine20/Voipmanager/translations/es.po
tine20/Voipmanager/translations/pl.po
tine20/Voipmanager/translations/ro_RO.po [new file with mode: 0644]
tine20/Zend/Cache/Backend/Memcached.php
tine20/Zend/Filter/Input.php [deleted file]
tine20/Zend/Log.php
tine20/Zend/OpenId/Provider.php
tine20/Zend/Queue/Adapter/Db.php [deleted file]
tine20/Zend/Validate/NotEmpty.php [deleted file]
tine20/bootstrap.php
tine20/build.xml
tine20/composer.json
tine20/library/Zend/Cache.php
tine20/library/Zend/Cache/Backend.php
tine20/library/Zend/Cache/Backend/Apc.php
tine20/library/Zend/Cache/Backend/BlackHole.php [new file with mode: 0644]
tine20/library/Zend/Cache/Backend/ExtendedInterface.php
tine20/library/Zend/Cache/Backend/File.php
tine20/library/Zend/Cache/Backend/Interface.php
tine20/library/Zend/Cache/Backend/Libmemcached.php [new file with mode: 0644]
tine20/library/Zend/Cache/Backend/Memcached.php
tine20/library/Zend/Cache/Backend/Sqlite.php
tine20/library/Zend/Cache/Backend/Static.php [new file with mode: 0644]
tine20/library/Zend/Cache/Backend/Test.php
tine20/library/Zend/Cache/Backend/TwoLevels.php
tine20/library/Zend/Cache/Backend/WinCache.php [new file with mode: 0644]
tine20/library/Zend/Cache/Backend/Xcache.php
tine20/library/Zend/Cache/Backend/ZendPlatform.php
tine20/library/Zend/Cache/Backend/ZendServer.php
tine20/library/Zend/Cache/Backend/ZendServer/Disk.php
tine20/library/Zend/Cache/Backend/ZendServer/ShMem.php
tine20/library/Zend/Cache/Core.php
tine20/library/Zend/Cache/Exception.php
tine20/library/Zend/Cache/Frontend/Capture.php [new file with mode: 0644]
tine20/library/Zend/Cache/Frontend/Class.php
tine20/library/Zend/Cache/Frontend/File.php
tine20/library/Zend/Cache/Frontend/Function.php
tine20/library/Zend/Cache/Frontend/Output.php
tine20/library/Zend/Cache/Frontend/Page.php
tine20/library/Zend/Cache/Manager.php [new file with mode: 0644]
tine20/library/Zend/Filter.php
tine20/library/Zend/Filter/Alnum.php
tine20/library/Zend/Filter/Alpha.php
tine20/library/Zend/Filter/BaseName.php
tine20/library/Zend/Filter/Boolean.php [new file with mode: 0644]
tine20/library/Zend/Filter/Callback.php
tine20/library/Zend/Filter/Compress.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/Bz2.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/CompressAbstract.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/CompressInterface.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/Gz.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/Lzf.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/Rar.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/Tar.php [new file with mode: 0644]
tine20/library/Zend/Filter/Compress/Zip.php [new file with mode: 0644]
tine20/library/Zend/Filter/Decompress.php [new file with mode: 0644]
tine20/library/Zend/Filter/Decrypt.php
tine20/library/Zend/Filter/Digits.php
tine20/library/Zend/Filter/Dir.php
tine20/library/Zend/Filter/Encrypt.php
tine20/library/Zend/Filter/Encrypt/Interface.php
tine20/library/Zend/Filter/Encrypt/Mcrypt.php
tine20/library/Zend/Filter/Encrypt/Openssl.php
tine20/library/Zend/Filter/Exception.php
tine20/library/Zend/Filter/File/Decrypt.php
tine20/library/Zend/Filter/File/Encrypt.php
tine20/library/Zend/Filter/File/LowerCase.php
tine20/library/Zend/Filter/File/Rename.php
tine20/library/Zend/Filter/File/UpperCase.php
tine20/library/Zend/Filter/HtmlEntities.php
tine20/library/Zend/Filter/Inflector.php
tine20/library/Zend/Filter/Input.php
tine20/library/Zend/Filter/Int.php
tine20/library/Zend/Filter/Interface.php
tine20/library/Zend/Filter/LocalizedToNormalized.php
tine20/library/Zend/Filter/NormalizedToLocalized.php
tine20/library/Zend/Filter/Null.php [new file with mode: 0644]
tine20/library/Zend/Filter/PregReplace.php
tine20/library/Zend/Filter/RealPath.php
tine20/library/Zend/Filter/StringToLower.php
tine20/library/Zend/Filter/StringToUpper.php
tine20/library/Zend/Filter/StringTrim.php
tine20/library/Zend/Filter/StripNewlines.php
tine20/library/Zend/Filter/StripTags.php
tine20/library/Zend/Filter/Word/CamelCaseToDash.php
tine20/library/Zend/Filter/Word/CamelCaseToSeparator.php
tine20/library/Zend/Filter/Word/CamelCaseToUnderscore.php
tine20/library/Zend/Filter/Word/DashToCamelCase.php
tine20/library/Zend/Filter/Word/DashToSeparator.php
tine20/library/Zend/Filter/Word/DashToUnderscore.php
tine20/library/Zend/Filter/Word/Separator/Abstract.php
tine20/library/Zend/Filter/Word/SeparatorToCamelCase.php
tine20/library/Zend/Filter/Word/SeparatorToDash.php
tine20/library/Zend/Filter/Word/SeparatorToSeparator.php
tine20/library/Zend/Filter/Word/UnderscoreToCamelCase.php
tine20/library/Zend/Filter/Word/UnderscoreToDash.php
tine20/library/Zend/Filter/Word/UnderscoreToSeparator.php
tine20/library/Zend/Log.php
tine20/library/Zend/Log/Exception.php
tine20/library/Zend/Log/FactoryInterface.php [new file with mode: 0644]
tine20/library/Zend/Log/Filter/Abstract.php [new file with mode: 0644]
tine20/library/Zend/Log/Filter/Interface.php
tine20/library/Zend/Log/Filter/Message.php
tine20/library/Zend/Log/Filter/Priority.php
tine20/library/Zend/Log/Filter/Suppress.php
tine20/library/Zend/Log/Formatter/Abstract.php [new file with mode: 0644]
tine20/library/Zend/Log/Formatter/Firebug.php
tine20/library/Zend/Log/Formatter/Interface.php
tine20/library/Zend/Log/Formatter/Simple.php
tine20/library/Zend/Log/Formatter/Xml.php
tine20/library/Zend/Log/Writer/Abstract.php
tine20/library/Zend/Log/Writer/Db.php
tine20/library/Zend/Log/Writer/Firebug.php
tine20/library/Zend/Log/Writer/Mail.php
tine20/library/Zend/Log/Writer/Mock.php
tine20/library/Zend/Log/Writer/Null.php
tine20/library/Zend/Log/Writer/Stream.php
tine20/library/Zend/Log/Writer/Syslog.php
tine20/library/Zend/Log/Writer/ZendMonitor.php [new file with mode: 0644]
tine20/library/Zend/OpenId.php
tine20/library/Zend/OpenId/Consumer.php
tine20/library/Zend/OpenId/Consumer/Storage.php
tine20/library/Zend/OpenId/Consumer/Storage/File.php
tine20/library/Zend/OpenId/Exception.php
tine20/library/Zend/OpenId/Extension.php
tine20/library/Zend/OpenId/Extension/Sreg.php
tine20/library/Zend/OpenId/Provider.php
tine20/library/Zend/OpenId/Provider/Storage.php
tine20/library/Zend/OpenId/Provider/Storage/File.php
tine20/library/Zend/OpenId/Provider/User.php
tine20/library/Zend/OpenId/Provider/User/Session.php
tine20/library/Zend/Queue.php
tine20/library/Zend/Queue/Adapter/Activemq.php
tine20/library/Zend/Queue/Adapter/AdapterAbstract.php
tine20/library/Zend/Queue/Adapter/AdapterInterface.php
tine20/library/Zend/Queue/Adapter/Array.php
tine20/library/Zend/Queue/Adapter/Db.php
tine20/library/Zend/Queue/Adapter/Db/Message.php
tine20/library/Zend/Queue/Adapter/Db/Queue.php
tine20/library/Zend/Queue/Adapter/Db/mysql.sql [moved from tine20/library/Zend/Queue/Adapter/Db/queue.sql with 100% similarity]
tine20/library/Zend/Queue/Adapter/Db/postgresql.sql [new file with mode: 0644]
tine20/library/Zend/Queue/Adapter/Db/queue_sqlite.sql [new file with mode: 0644]
tine20/library/Zend/Queue/Adapter/Db/sqlsrv.sql [new file with mode: 0644]
tine20/library/Zend/Queue/Adapter/Memcacheq.php
tine20/library/Zend/Queue/Adapter/Null.php
tine20/library/Zend/Queue/Adapter/PlatformJobQueue.php
tine20/library/Zend/Queue/Exception.php
tine20/library/Zend/Queue/Message.php
tine20/library/Zend/Queue/Message/Iterator.php
tine20/library/Zend/Queue/Message/PlatformJob.php
tine20/library/Zend/Queue/Stomp/Client.php
tine20/library/Zend/Queue/Stomp/Client/Connection.php
tine20/library/Zend/Queue/Stomp/Client/ConnectionInterface.php
tine20/library/Zend/Queue/Stomp/Frame.php
tine20/library/Zend/Queue/Stomp/FrameInterface.php
tine20/library/Zend/Validate/Abstract.php
tine20/library/Zend/Validate/Alnum.php
tine20/library/Zend/Validate/Alpha.php
tine20/library/Zend/Validate/Barcode.php
tine20/library/Zend/Validate/Barcode/AdapterAbstract.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/AdapterInterface.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Code25.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Code25interleaved.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Code39.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Code39ext.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Code93.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Code93ext.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Ean12.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Ean13.php
tine20/library/Zend/Validate/Barcode/Ean14.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Ean18.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Ean2.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Ean5.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Ean8.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Gtin12.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Gtin13.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Gtin14.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Identcode.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Intelligentmail.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Issn.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Itf14.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Leitcode.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Planet.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Postnet.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Royalmail.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Sscc.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/UpcA.php [deleted file]
tine20/library/Zend/Validate/Barcode/Upca.php [new file with mode: 0644]
tine20/library/Zend/Validate/Barcode/Upce.php [new file with mode: 0644]
tine20/library/Zend/Validate/Between.php
tine20/library/Zend/Validate/Callback.php [new file with mode: 0644]
tine20/library/Zend/Validate/Ccnum.php
tine20/library/Zend/Validate/CreditCard.php [new file with mode: 0644]
tine20/library/Zend/Validate/Date.php
tine20/library/Zend/Validate/Db/Abstract.php
tine20/library/Zend/Validate/Db/NoRecordExists.php
tine20/library/Zend/Validate/Db/RecordExists.php
tine20/library/Zend/Validate/Digits.php
tine20/library/Zend/Validate/EmailAddress.php
tine20/library/Zend/Validate/Exception.php
tine20/library/Zend/Validate/File/Count.php
tine20/library/Zend/Validate/File/Crc32.php
tine20/library/Zend/Validate/File/ExcludeExtension.php
tine20/library/Zend/Validate/File/ExcludeMimeType.php
tine20/library/Zend/Validate/File/Exists.php
tine20/library/Zend/Validate/File/Extension.php
tine20/library/Zend/Validate/File/FilesSize.php
tine20/library/Zend/Validate/File/Hash.php
tine20/library/Zend/Validate/File/ImageSize.php
tine20/library/Zend/Validate/File/IsCompressed.php
tine20/library/Zend/Validate/File/IsImage.php
tine20/library/Zend/Validate/File/Md5.php
tine20/library/Zend/Validate/File/MimeType.php
tine20/library/Zend/Validate/File/NotExists.php
tine20/library/Zend/Validate/File/Sha1.php
tine20/library/Zend/Validate/File/Size.php
tine20/library/Zend/Validate/File/Upload.php
tine20/library/Zend/Validate/File/WordCount.php
tine20/library/Zend/Validate/Float.php
tine20/library/Zend/Validate/GreaterThan.php
tine20/library/Zend/Validate/Hex.php
tine20/library/Zend/Validate/Hostname.php
tine20/library/Zend/Validate/Hostname/Biz.php
tine20/library/Zend/Validate/Hostname/Cn.php
tine20/library/Zend/Validate/Hostname/Com.php
tine20/library/Zend/Validate/Hostname/Jp.php
tine20/library/Zend/Validate/Iban.php
tine20/library/Zend/Validate/Identical.php
tine20/library/Zend/Validate/InArray.php
tine20/library/Zend/Validate/Int.php
tine20/library/Zend/Validate/Interface.php
tine20/library/Zend/Validate/Ip.php
tine20/library/Zend/Validate/Isbn.php [new file with mode: 0644]
tine20/library/Zend/Validate/Ldap/Dn.php [new file with mode: 0644]
tine20/library/Zend/Validate/LessThan.php
tine20/library/Zend/Validate/NotEmpty.php
tine20/library/Zend/Validate/PostCode.php [new file with mode: 0644]
tine20/library/Zend/Validate/Regex.php
tine20/library/Zend/Validate/Sitemap/Changefreq.php
tine20/library/Zend/Validate/Sitemap/Lastmod.php
tine20/library/Zend/Validate/Sitemap/Loc.php
tine20/library/Zend/Validate/Sitemap/Priority.php
tine20/library/Zend/Validate/StringLength.php
tine20/library/zf1ext/Zend/Auth/Adapter/Http/Abstract.php [moved from tine20/Zend/Auth/Adapter/Http/Abstract.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/Http/Ntlm.php [moved from tine20/Zend/Auth/Adapter/Http/Ntlm.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/Http/Ntlm/Identity.php [moved from tine20/Zend/Auth/Adapter/Http/Ntlm/Identity.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/Http/Ntlm/Resolver/Interface.php [moved from tine20/Zend/Auth/Adapter/Http/Ntlm/Resolver/Interface.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/Http/Ntlm/Resolver/Mock.php [moved from tine20/Zend/Auth/Adapter/Http/Ntlm/Resolver/Mock.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/Http/NtlmTests.php [moved from tine20/Zend/Auth/Adapter/Http/NtlmTests.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/Imap.php [moved from tine20/Zend/Auth/Adapter/Imap.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl.php [moved from tine20/Zend/Auth/Adapter/ModSsl.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl/Certificate/Abstract.php [moved from tine20/Zend/Auth/Adapter/ModSsl/Certificate/Abstract.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl/Certificate/Apache.php [moved from tine20/Zend/Auth/Adapter/ModSsl/Certificate/Apache.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl/Certificate/Factory.php [moved from tine20/Zend/Auth/Adapter/ModSsl/Certificate/Factory.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl/Certificate/ICPBrasil.php [moved from tine20/Zend/Auth/Adapter/ModSsl/Certificate/ICPBrasil.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl/Certificate/Interface.php [moved from tine20/Zend/Auth/Adapter/ModSsl/Certificate/Interface.php with 100% similarity]
tine20/library/zf1ext/Zend/Auth/Adapter/ModSsl/Certificate/X509.php [moved from tine20/Zend/Auth/Adapter/ModSsl/Certificate/X509.php with 100% similarity]
tine20/library/zf1ext/Zend/Cache/Backend/Redis.php [moved from tine20/Zend/Cache/Backend/Redis.php with 100% similarity]
tine20/library/zf1ext/Zend/Filter/Empty.php [moved from tine20/Zend/Filter/Empty.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client.php [moved from tine20/Zend/Json/Client.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/Exception.php [moved from tine20/Zend/Json/Client/Exception.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/FaultException.php [moved from tine20/Zend/Json/Client/FaultException.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/HttpException.php [moved from tine20/Zend/Json/Client/HttpException.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/IntrospectException.php [moved from tine20/Zend/Json/Client/IntrospectException.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/Response.php [moved from tine20/Zend/Json/Client/Response.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/SMD.php [moved from tine20/Zend/Json/Client/SMD.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/ServerIntrospection.php [moved from tine20/Zend/Json/Client/ServerIntrospection.php with 100% similarity]
tine20/library/zf1ext/Zend/Json/Client/ServerProxy.php [moved from tine20/Zend/Json/Client/ServerProxy.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler.php [moved from tine20/Zend/Scheduler.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Backend/Abstract.php [moved from tine20/Zend/Scheduler/Backend/Abstract.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Backend/Db.php [moved from tine20/Zend/Scheduler/Backend/Db.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Backend/File.php [moved from tine20/Zend/Scheduler/Backend/File.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Exception.php [moved from tine20/Zend/Scheduler/Exception.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Task.php [moved from tine20/Zend/Scheduler/Task.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Task/Interface.php [moved from tine20/Zend/Scheduler/Task/Interface.php with 100% similarity]
tine20/library/zf1ext/Zend/Scheduler/Task/Rule.php [moved from tine20/Zend/Scheduler/Task/Rule.php with 100% similarity]
tine20/library/zf1ext/Zend/Service/Nominatim.php [moved from tine20/Zend/Service/Nominatim.php with 100% similarity]
tine20/library/zf1ext/Zend/Service/Nominatim/Result.php [moved from tine20/Zend/Service/Nominatim/Result.php with 100% similarity]
tine20/library/zf1ext/Zend/Service/Nominatim/ResultSet.php [moved from tine20/Zend/Service/Nominatim/ResultSet.php with 100% similarity]
tine20/library/zf1ext/Zend/Service/Tine20.php [moved from tine20/Zend/Service/Tine20.php with 100% similarity]
tine20/library/zf1ext/Zend/Session/Validator/IpAddress.php [moved from tine20/Zend/Session/Validator/IpAddress.php with 100% similarity]

index 11df042..2f468da 100644 (file)
@@ -1,3 +1,15 @@
+tine20 (2014.09.7-0) natty; urgency=low
+
+  * New upstream release "Koriander" Service Release 6
+
+ -- Philipp Schüle <p.schuele@metaways.de>  Fri, 09 Jan 2014 11:51:36 +0100
+
+tine20 (2014.09.6-0) natty; urgency=low
+
+  * New upstream release "Koriander" Service Release 5
+
+ -- Philipp Schüle <p.schuele@metaways.de>  Thu, 08 Jan 2014 14:11:35 +0100
+
 tine20 (2014.09.5-0) natty; urgency=low
 
   * New upstream release "Koriander" Service Release 4
index 55c67bd..457fb39 100755 (executable)
@@ -11,11 +11,11 @@ BASEDIR=`readlink -f ./tine20build`
 TEMPDIR="$BASEDIR/temp"
 MISCPACKAGESDIR="$BASEDIR/packages/misc"
 
-CODENAME="Koriander"
+CODENAME="Elena"
 GITURL="http://git.tine20.org/git/tine20"
 
 RELEASE=""
-GITBRANCH="2014.09"
+GITBRANCH="2015.07"
 PACKAGEDIR=""
 
 PATH=$MISCPACKAGESDIR:$TEMPDIR/tine20/vendor/bin:$PATH
index 11df042..2f468da 100644 (file)
@@ -1,3 +1,15 @@
+tine20 (2014.09.7-0) natty; urgency=low
+
+  * New upstream release "Koriander" Service Release 6
+
+ -- Philipp Schüle <p.schuele@metaways.de>  Fri, 09 Jan 2014 11:51:36 +0100
+
+tine20 (2014.09.6-0) natty; urgency=low
+
+  * New upstream release "Koriander" Service Release 5
+
+ -- Philipp Schüle <p.schuele@metaways.de>  Thu, 08 Jan 2014 14:11:35 +0100
+
 tine20 (2014.09.5-0) natty; urgency=low
 
   * New upstream release "Koriander" Service Release 4
index 674b6fc..6ef9bf5 100644 (file)
@@ -27,7 +27,7 @@
 
 %global vyear 2014
 %global vmonth 09
-%global vmin 5
+%global vmin 7
 # comment out release suffix when not an unstable release
 # %global rsuffix rc2
 
@@ -333,6 +333,12 @@ fi
 
 
 %changelog
+* Fri Jan 08 2015 Philipp Schüle <p.schuele@metaways.de> - 2014.09.7-0
+- New upstream release Koriander Service Release 6
+
+* Thu Jan 08 2015 Philipp Schüle <p.schuele@metaways.de> - 2014.09.6-0
+- New upstream release Koriander Service Release 5
+
 * Mon Dec 01 2014 Philipp Schüle <p.schuele@metaways.de> - 2014.09.5-0
 - New upstream release Koriander Service Release 4
 
index b9cb38d..867f61c 100644 (file)
@@ -146,6 +146,8 @@ class Setup_JsonTest extends PHPUnit_Framework_TestCase
      */
     public function testLoginWithWrongUsernameAndPassword()
     {
+        $this->markTestSkipped('FIXME 0010994: fix broken setup test Setup_JsonTest::testLoginWithWrongUsernameAndPassword');
+
         $result = $this->_json->login('unknown_user_xxyz', 'wrong_password');
         $this->assertTrue(is_array($result));
         $this->assertFalse($result['success']);
index 2a6bcac..f4893b0 100755 (executable)
@@ -29,8 +29,8 @@ class ActiveSync_AllTests
         $suite->addTest(ActiveSync_Backend_AllTests::suite());
         
         $suite->addTestSuite('ActiveSync_TimezoneConverterTest');
-        
         $suite->addTestSuite('ActiveSync_Frontend_JsonTests');
+        $suite->addTestSuite('ActiveSync_Server_PluginTests');
         
         return $suite;
     }
diff --git a/tests/tine20/ActiveSync/Server/PluginTests.php b/tests/tine20/ActiveSync/Server/PluginTests.php
new file mode 100644 (file)
index 0000000..94f98d1
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     ActiveSync
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * Test class for ActiveSync_Server_Plugin
+ * 
+ * @package     ActiveSync
+ * @subpackage  Server
+ */
+class ActiveSync_Server_PluginTests extends TestCase
+{
+    /**
+     * test general functionality of ActiveSync_Server_Plugin
+     */
+    public function testServerGetParameter()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php?frontend=activesync HTTP/1.1\r
+Host: localhost\r
+Depth: 0\r
+User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0 Lightning/1.7\r
+EOS
+        );
+        
+        $request->setQuery(new Zend\Stdlib\Parameters(array('frontend' => 'activesync')));
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('ActiveSync_Server_Http', $server);
+    }
+}
index 5fba8bf..e8a4cd2 100644 (file)
@@ -7,11 +7,13 @@
  * @copyright   Copyright (c) 2007-2013 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Matthias Greiling <m.greiling@metaways.de>
  */
-/**
- * Test helper
- */
+
+// needed for bootstrap / autoloader
 require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'TestHelper.php';
 
+/**
+ * @package     Tinebase
+ */
 class AllTests
 {
     public static function main()
@@ -44,6 +46,7 @@ class AllTests
         $suite->addTest(Sipgate_AllTests::suite());
         $suite->addTest(SimpleFAQ_AllTests::suite());
         $suite->addTest(Zend_AllTests::suite());
+        
         return $suite;
     }
 }
index 8e7fc8d..1e22c36 100644 (file)
@@ -24,6 +24,7 @@ LAST-MODIFIED;VALUE=DATE-TIME:20111121T115908Z
 DTSTAMP;VALUE=DATE-TIME:20111121T115908Z\r
 UID:4f0162146d61cb2c06cbe2abf94636f4526abe16\r
 SEQUENCE:0\r
+STATUS:CANCELLED\r
 DTSTART;VALUE=DATE-TIME;TZID=Europe/Berlin:20111121T130000\r
 DTEND;VALUE=DATE-TIME;TZID=Europe/Berlin:20111121T140000\r
 ORGANIZER;CN="Admin Account, Tine 2.0":mailto:l.kneschke@caldav.org\r
@@ -32,9 +33,6 @@ ATTENDEE;CN="Admin Account, Tine 2.0";CUTYPE=INDIVIDUAL;EMAIL=l.kneschke@ca
  ke@caldav.org\r
 ATTENDEE;CN="Löw, Jogi";CUTYPE=INDIVIDUAL;EMAIL=j.loew@caldav.org;PARTSTAT\r
  =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=FALSE:mailto:j.loew@caldav.org\r
-ATTENDEE;CN="External, Caldav";CUTYPE=INDIVIDUAL;EMAIL=tine20admin@caldav.n\r
- et;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=FALSE:mailto:tine20admi\r
- n@caldav.net\r
 CLASS:PUBLIC\r
 SUMMARY:test mit extern\r
 TRANSP:OPAQUE\r
index 5fc7007..7ea8206 100644 (file)
@@ -7,7 +7,7 @@
  * @copyright   Copyright (c) 2011-2015 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Philipp Schüle <p.schuele@metaways.de>
  * 
- * @todo        add tests testInvitationCancel and testOrganizerSendBy
+ * @todo        add test testOrganizerSendBy
  * @todo extend Calendar_TestCase
  */
 
@@ -90,7 +90,7 @@ class Calendar_Frontend_iMIPTest extends TestCase
         Calendar_Controller_Event::getInstance()->sendNotifications(false);
         
         if (! empty($this->_eventIdsToDelete)) {
-            Calendar_Controller_Event::getInstance()->delete($this->_eventIdsToDelete);
+            $this->_deleteEvents(TRUE);
         }
         
         if ($this->_emailTestClass instanceof Felamimail_Controller_MessageTest) {
@@ -299,6 +299,24 @@ class Calendar_Frontend_iMIPTest extends TestCase
     }
     
     /**
+     * delete events
+     *
+     * @return NULL
+     * @param boolean $purgeRecords true database delete or use is_deleted = 1
+     */
+    protected function _deleteEvents($purgeRecords = FALSE)
+    {
+        if ($purgeRecords) {
+            $be = new Calendar_Backend_Sql();
+            foreach ($this->_eventIdsToDelete as $idToDelete) {
+                $be->delete($idToDelete);
+            }
+        } else {
+            Calendar_Controller_Event::getInstance()->delete($this->_eventIdsToDelete);
+        }
+    }
+
+    /**
      * testExternalInvitationRequestProcess
      */
     public function testExternalInvitationRequestProcess()
@@ -572,15 +590,72 @@ class Calendar_Frontend_iMIPTest extends TestCase
     }
 
     /**
-     * testInvitationCancel
-     * 
-      * @todo implement
-      */
-     public function testInvitationCancel()
-     {
-        $this->markTestIncomplete('implement me');
-     }
-    
+     * testExternalInvitationCancelProcessEvent
+     *
+     */
+    public function testExternalInvitationCancelProcessEvent()
+    {
+        $iMIP = $this->testExternalInvitationRequestAutoProcess();
+        $this->_iMIPFrontendMock->process($iMIP, Calendar_Model_Attender::STATUS_ACCEPTED);
+        $this->_eventIdsToDelete[] = $iMIP->event->getId();
+
+        $ics = file_get_contents(dirname(__FILE__) . '/files/invitation_cancel.ics' );
+
+        $iMIP = new Calendar_Model_iMIP(array(
+            'id'             => Tinebase_Record_Abstract::generateUID(),
+            'ics'            => $ics,
+            'method'         => 'CANCEL',
+            'originator'     => 'l.kneschke@caldav.org',
+        ));
+
+        // TEST CANCEL
+        try {
+            $this->_iMIPFrontend->autoProcess($iMIP);
+        } catch (Exception $e) {
+            $this->fail('TEST NORMAL CANCEL autoProcess throws Exception: ' . $e);
+        }
+        unset($iMIP->existing_event);
+
+        $existingEvent = $iMIP->getExistingEvent(true);
+        $this->assertNull($existingEvent, 'event must be deleted');
+
+        $existingEvent = $iMIP->getExistingEvent(true, true);
+        $this->assertEquals($existingEvent->is_deleted, 1, 'event must be deleted');
+    }
+
+    /**
+     * testExternalInvitationCancelProcessAttendee
+     *
+     */
+    public function testExternalInvitationCancelProcessAttendee()
+    {
+        $iMIP = $this->testExternalInvitationRequestAutoProcess();
+        $this->_iMIPFrontendMock->process($iMIP, Calendar_Model_Attender::STATUS_ACCEPTED);
+        $this->_eventIdsToDelete[] = $eventId = $iMIP->event->getId();
+
+        $ics = file_get_contents(dirname(__FILE__) . '/files/invitation_cancel.ics' );
+        // set status to not cancelled, so that only attendees are removed from the event
+        $ics = preg_replace('#STATUS:CANCELLED#', 'STATUS:CONFIRMED', $ics);
+
+        $iMIP = new Calendar_Model_iMIP(array(
+            'id'             => Tinebase_Record_Abstract::generateUID(),
+            'ics'            => $ics,
+            'method'         => 'CANCEL',
+            'originator'     => 'l.kneschke@caldav.org',
+        ));
+
+        // TEST CANCEL
+        try {
+            $this->_iMIPFrontend->autoProcess($iMIP);
+        } catch (Exception $e) {
+            $this->fail('TEST NORMAL CANCEL autoProcess throws Exception: ' . $e);
+        }
+        unset($iMIP->existing_event);
+
+        $updatedEvent = Calendar_Controller_Event::getInstance()->get($eventId);
+        $this->assertEquals(3, count($updatedEvent->attendee), 'attendee count must be 3');
+    }
+
     /**
       * testInvitationCancel
       * 
index 9167b2c..7b3b2c7 100644 (file)
@@ -201,6 +201,7 @@ class Calendar_Model_AttenderTests extends Calendar_TestCase
      * testLongEmailAddress
      * 
      * @see 0009066: iCal .ics file import fails
+     * @see 0011000: Cannot accept invitation to meeting when organiser email is too long
      */
     public function testLongEmailAddress()
     {
@@ -211,6 +212,6 @@ class Calendar_Model_AttenderTests extends Calendar_TestCase
         );
         
         $contact = Calendar_Model_Attender::resolveEmailToContact($attenderData);
-        $this->assertEquals(strtolower('CMT_Marsta@corpmx01.external.atlascopco.com'), $contact->email);
+        $this->assertEquals(strtolower($attenderData['email']), $contact->email);
     }
 }
index 4343f49..cb7683a 100644 (file)
@@ -36,7 +36,7 @@ abstract class Crm_Export_AbstractTest extends Crm_AbstractTest
     protected function setUp()
     {
         Tinebase_TransactionManager::getInstance()->startTransaction(Tinebase_Core::getDb());
-        Tinebase_Cache_PerRequest::getInstance()->resetCache();
+        Tinebase_Cache_PerRequest::getInstance()->reset();
         $this->_json = new Crm_Frontend_Json();
         
         $contact = $this->_getContact();
@@ -61,6 +61,6 @@ abstract class Crm_Export_AbstractTest extends Crm_AbstractTest
     protected function tearDown()
     {
         Tinebase_TransactionManager::getInstance()->rollBack();
-        Tinebase_Cache_PerRequest::getInstance()->resetCache();
+        Tinebase_Cache_PerRequest::getInstance()->reset();
     }
 }
index 99dad18..2f65e9d 100644 (file)
@@ -1686,7 +1686,7 @@ Photographer', $message->body);
     {
         $cachedMessage = $this->messageTestHelper('html_jump_labels.eml');
         $message = $this->_controller->getCompleteMessage($cachedMessage);
-        $this->assertContains('<a href="#felamimail_inline_test" target="_self">test</a>
+        $this->assertContains('<a href="#felamimail_inline_test" target="_blank">test</a>
 <p>Hello,</p>
 <p id="felamimail_inline_test">Text Content</p>', $message->body);
     }
index a71aa82..b4cad9e 100644 (file)
@@ -621,7 +621,16 @@ ZUBtZXRhd2F5cy5kZT4gc2NocmllYjoKCg==&#13;
         
         $folders = $controller->getAllFolders();
         
-        $this->assertGreaterThanOrEqual(1, count($folders));
+        $this->assertGreaterThanOrEqual(5, count($folders));
+        $foundFolderTypes = array();
+        foreach ($folders as $folder) {
+            $foundFolderTypes[] = $folder->type;
+        }
+        $this->assertContains(Syncroton_Command_FolderSync::FOLDERTYPE_DRAFTS,       $foundFolderTypes, 'Drafts folder missing:' . print_r($foundFolderTypes, TRUE));
+        $this->assertContains(Syncroton_Command_FolderSync::FOLDERTYPE_DELETEDITEMS, $foundFolderTypes, 'Trash folder missing:' .  print_r($foundFolderTypes, TRUE));
+        $this->assertContains(Syncroton_Command_FolderSync::FOLDERTYPE_SENTMAIL,     $foundFolderTypes, 'Sent folder missing:' .   print_r($foundFolderTypes, TRUE));
+        $this->assertContains(Syncroton_Command_FolderSync::FOLDERTYPE_OUTBOX,       $foundFolderTypes, 'Outbox folder missing:' . print_r($foundFolderTypes, TRUE));
+        
         $this->assertTrue(array_pop($folders) instanceof Syncroton_Model_Folder);
         
         // look for 'INBOX/sub'
@@ -765,6 +774,28 @@ ZUBtZXRhd2F5cy5kZT4gc2NocmllYjoKCg==&#13;
     }
 
     /**
+     * testGetCountOfChanges for fake folder (outbox)
+     */
+    public function testGetCountOfChangesFakeFolder()
+    {
+        $controller = $this->_getController($this->_getDevice(Syncroton_Model_Device::TYPE_IPHONE));
+        
+        $numberOfChanges = $controller->getCountOfChanges(
+            Syncroton_Registry::getContentStateBackend(), 
+            new Syncroton_Model_Folder(array(
+                'id'             => Tinebase_Record_Abstract::generateUID(),
+                'serverId'       => 'fake-' . Syncroton_Command_FolderSync::FOLDERTYPE_OUTBOX,
+                'lastfiltertype' => Syncroton_Command_Sync::FILTER_NOTHING
+            )), 
+            new Syncroton_Model_SyncState(array(
+                'lastsync' => Tinebase_DateTime::now()->subHour(1)
+            ))
+        );
+        
+        $this->assertEquals(0, $numberOfChanges);
+    }
+
+    /**
      * testSendMailWithoutSubject
      * 
      * @see 0007870: Can't send mail without subject
index 5197732..a22c6fd 100644 (file)
@@ -33,7 +33,7 @@ class Filemanager_Controller_DownloadLinkTests extends TestCase
         
         Tinebase_FileSystem::getInstance()->clearStatCache();
         Tinebase_FileSystem::getInstance()->clearDeletedFilesFromFilesystem();
-        Tinebase_Cache_PerRequest::getInstance()->resetCache();
+        Tinebase_Cache_PerRequest::getInstance()->reset();
     }
     
     /**
index faf673a..b9c1876 100644 (file)
@@ -63,6 +63,20 @@ abstract class ServerTestCase extends PHPUnit_Framework_TestCase
     }
     
     /**
+     * Performs custom preparations on the process isolation template.
+     *
+     * @param Text_Template $template
+     * @since Method available since Release 3.4.0
+     */
+    protected function prepareTemplate(Text_Template $template)
+    {
+        // needed to get bootstrap file included in separate process again
+        $template->setVar(array(
+            'globals' => sprintf("\$GLOBALS['__PHPUNIT_BOOTSTRAP'] = '%s/bootstrap.php';", __DIR__)
+        ));
+    }
+    
+    /**
      * fetch test user credentials
      * 
      * @return array
diff --git a/tests/tine20/ServerTestHelper.php b/tests/tine20/ServerTestHelper.php
deleted file mode 100644 (file)
index ef697e5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Tine 2.0
- * 
- * @package     tests
- * @subpackage  test root
- * @license     http://www.gnu.org/licenses/agpl.html AGPL3
- * @copyright   Copyright (c) 2008 Metaways Infosystems GmbH (http://www.metaways.de)
- * @author      Matthias Greiling <m.greiling@metaways.de>
- */
-
-/*
- * Set error reporting 
- * 
- * @todo put that in config.inc as well?
- */
-error_reporting( E_ALL | E_STRICT );
-
-/*
- * Set include path
- */
-define('PATH_TO_REAL_DIR', dirname(__FILE__). '/../../tine20');
-define('PATH_TO_TINE_LIBRARY', dirname(__FILE__). '/../../tine20/library');
-define('PATH_TO_TEST_DIR', dirname(__FILE__));
-
-$path = array(
-    PATH_TO_REAL_DIR,
-    PATH_TO_TEST_DIR,
-    PATH_TO_TEST_DIR . PATH_SEPARATOR . 'library',
-    PATH_TO_TINE_LIBRARY,
-    get_include_path(),
-);
-
-set_include_path(implode(PATH_SEPARATOR, $path));
-
-require_once 'bootstrap.php';
-
-// phpunit wants to handle the errors / report all errors + restore the default error handler
-error_reporting(E_ALL | E_STRICT);
-restore_error_handler();
-
-// disable sending cookies
-Zend_Session::setOptions(array(
-    'use_cookies'      => 0,
-    'use_only_cookies' => 0
-));
index 400338c..4410116 100644 (file)
@@ -11,7 +11,7 @@
 /**
  * Test helper
  */
-require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'TestHelper.php';
+require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestHelper.php';
 
 /**
  * Abstract test class
@@ -119,7 +119,7 @@ abstract class TestCase extends PHPUnit_Framework_TestCase
         if ($this->_invalidateRolesCache) {
             Tinebase_Acl_Roles::getInstance()->resetClassCache();
         }
-        Tinebase_Cache_PerRequest::getInstance()->resetCache();
+        Tinebase_Cache_PerRequest::getInstance()->reset();
     }
     
     /**
index 9708a89..37c9c2a 100644 (file)
@@ -9,40 +9,6 @@
  * @author      Matthias Greiling <m.greiling@metaways.de>
  */
 
-/*
- * Set include path
- */
-define('PATH_TO_REAL_DIR', dirname(__FILE__). '/../../tine20');
-define('PATH_TO_TINE_LIBRARY', dirname(__FILE__). '/../../tine20/library');
-define('PATH_TO_TEST_DIR', dirname(__FILE__));
-
-$path = array(
-    PATH_TO_REAL_DIR,
-    PATH_TO_TEST_DIR,
-    PATH_TO_TEST_DIR . PATH_SEPARATOR . 'library',
-    PATH_TO_TINE_LIBRARY,
-    get_include_path(),
-);
-
-set_include_path(implode(PATH_SEPARATOR, $path));
-
-require_once 'bootstrap.php';
-
-// add test paths to autoloader
-$autoloader = require 'vendor/autoload.php';
-$autoloader->set('', $path);
-
-// phpunit wants to handle the errors / report all errors + restore the default error handler
-error_reporting(E_ALL | E_STRICT);
-restore_error_handler();
-
-// disable sending cookies
-Zend_Session::setOptions(array(
-    'use_cookies'      => 0,
-    'use_only_cookies' => 0
-));
-
 Tinebase_Session_Abstract::setSessionEnabled('TINE20SESSID');
 
 TestServer::getInstance()->initFramework();
index c1f0f3a..3c81a5c 100644 (file)
@@ -68,6 +68,7 @@ class Tinebase_AllTests
         $suite->addTestSuite('Tinebase_Redis_QueueTest');
         $suite->addTestSuite('Tinebase_Pluggable_ConcreteTest');
         $suite->addTestSuite('Tinebase_TempFileTest');
+        $suite->addTestSuite('Tinebase_Server_AllTests');
         
         $suite->addTest(Tinebase_User_AllTests::suite());
         $suite->addTest(Tinebase_Group_AllTests::suite());
@@ -77,7 +78,7 @@ class Tinebase_AllTests
         $suite->addTest(Tinebase_Tree_AllTests::suite());
         $suite->addTest(Tinebase_Scheduler_AllTests::suite());
         $suite->addTest(Tinebase_WebDav_AllTests::suite());
-        $suite->addTest(OpenDocument_AllTests::suite());        
+        $suite->addTest(OpenDocument_AllTests::suite());
         return $suite;
     }
 }
index ca6784c..19bf9e0 100644 (file)
@@ -65,6 +65,8 @@ class Tinebase_ConfigTest extends PHPUnit_Framework_TestCase
         foreach ($this->_filenamesToDelete as $filename) {
             unlink($filename);
         }
+
+        Tinebase_Config::getInstance()->clearCache();
     }
     
     /**
@@ -104,7 +106,6 @@ class Tinebase_ConfigTest extends PHPUnit_Framework_TestCase
             return;
         }
         
-        $configFileValue = $configData['Overwrite Test'];
         $overwrittenValue = Tinebase_Record_Abstract::generateUID();
         $this->_instance->{'Overwrite Test'} = $overwrittenValue;
         
@@ -178,25 +179,28 @@ class Tinebase_ConfigTest extends PHPUnit_Framework_TestCase
      */
     public function testApplicationDefaultConfig()
     {
+        $defaultConfigFile = $this->_getSalesCustomDefaultConfig();
+        
+        if (file_exists($defaultConfigFile)) {
+            $this->markTestSkipped('ignore test because Sales default config exists');
+        }
+        
         $ignoreBillablesConfig = Sales_Config::getInstance()->get(Sales_Config::IGNORE_BILLABLES_BEFORE);
         $this->assertEquals('2000-01-01 22:00:00', $ignoreBillablesConfig);
         
-        $dest = $this->_getSalesCustomDefaultConfig();
-        
-        if (! file_exists($dest)) {
-            copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'configtest.inc.php', $dest);
-            $this->_filenamesToDelete[] = $dest;
+        copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'configtest.inc.php', $defaultConfigFile);
+        $this->_filenamesToDelete[] = $defaultConfigFile;
 
-            Tinebase_Cache_PerRequest::getInstance()->resetCache('Tinebase_Config_Abstract');
-            
-            $ignoreBillablesConfigAppDefault = Sales_Config::getInstance()->get(Sales_Config::IGNORE_BILLABLES_BEFORE);
-            $this->assertEquals('1999-10-01 22:00:00', $ignoreBillablesConfigAppDefault);
-        }
+        Sales_Config::getInstance()->clearCache();
+        
+        $ignoreBillablesConfigAppDefault = Sales_Config::getInstance()->get(Sales_Config::IGNORE_BILLABLES_BEFORE);
+        $this->assertEquals('1999-10-01 22:00:00', $ignoreBillablesConfigAppDefault);
     }
     
     protected function _getSalesCustomDefaultConfig()
     {
-        return dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'tine20' . DIRECTORY_SEPARATOR . 'Sales' . DIRECTORY_SEPARATOR . 'config.inc.php';
+        return dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'tine20'
+            . DIRECTORY_SEPARATOR . 'Sales' . DIRECTORY_SEPARATOR . 'config.inc.php';
     }
     
     /**
index 9507d52..59a0ca2 100644 (file)
@@ -73,6 +73,8 @@ class Tinebase_ContainerTest extends PHPUnit_Framework_TestCase
     protected function tearDown()
     {
         Tinebase_TransactionManager::getInstance()->rollBack();
+        
+        Tinebase_Config::getInstance()->set(Tinebase_Config::ANYONE_ACCOUNT_DISABLED, false);
     }
     
     /**
@@ -87,6 +89,21 @@ class Tinebase_ContainerTest extends PHPUnit_Framework_TestCase
         $this->assertEquals($this->objects['initialContainer']->name, $container->name);
         $this->_validateOwnerId($container);
         $this->_validatePath($container);
+        
+        $cachedContainer = Tinebase_Cache_PerRequest::getInstance()->load('Tinebase_Container', 'getContainerById', $container->getId() . 'd0');
+        $this->assertEquals('Tinebase_Model_Container', get_class($cachedContainer), 'wrong type');
+        $this->assertEquals($cachedContainer->name, $container->name);
+        
+        $persistentCacheId = Tinebase_Cache_PerRequest::getInstance()->getPersistentCacheId(
+            'Tinebase_Container',
+            'getContainerById',
+            sha1($container->getId() . 'd0'),
+            Tinebase_Cache_PerRequest::VISIBILITY_SHARED
+        );
+        
+        $cachedContainer = Tinebase_Core::getCache()->load($persistentCacheId);
+        $this->assertEquals('Tinebase_Model_Container', get_class($cachedContainer), 'wrong type');
+        $this->assertEquals($cachedContainer->name, $container->name);
     }
     
     /**
@@ -437,18 +454,6 @@ class Tinebase_ContainerTest extends PHPUnit_Framework_TestCase
             $this->_validatePath($container);
         }
     }
-
-    /**
-     * try to get container by acl with Zend_Cache
-     */
-    public function testGetContainerByAclWithPersistentCaching()
-    {
-        Tinebase_Cache_PerRequest::getInstance()->usePersistentCache(true);
-        $this->testGetContainerByAcl();
-        $oldValue = Tinebase_Cache_PerRequest::getInstance()->usePersistentCache(false);
-
-        $this->assertTrue($oldValue);
-    }
     
     /**
      * test getGrantsOfRecords
@@ -562,7 +567,7 @@ class Tinebase_ContainerTest extends PHPUnit_Framework_TestCase
         
         Tinebase_User::getInstance()->setStatus($user2, 'disabled');
 
-        Tinebase_Cache_PerRequest::getInstance()->resetCache();
+        Tinebase_Cache_PerRequest::getInstance()->reset();
 
         $otherUsers = Tinebase_Container::getInstance()->getOtherUsers($user1, 'Calendar', array(
             Tinebase_Model_Grants::GRANT_READ
diff --git a/tests/tine20/Tinebase/EmailUser/FactoryTest.php b/tests/tine20/Tinebase/EmailUser/FactoryTest.php
new file mode 100644 (file)
index 0000000..32bb7d9
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ *
+ * @package     Tinebase
+ * @subpackage  EmailUser
+ * @license     http://www.gnu.org/licenses/agpl.html
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * Test class for Tinebase_EmailUser_Factory
+ * 
+ * @package     Tinebase
+ * @subpackage  EmailUser
+ */
+class Tinebase_EmailUser_FactoryTest extends TestCase
+{
+    /**
+     * 
+     */
+    public function testGetMailApplicationName()
+    {
+        $name = Tinebase_EmailUser_Factory::getMailApplicationName();
+        
+        $this->assertNotEmpty($name);
+    }
+    
+    /**
+     * 
+     */
+    public function testGetInstance()
+    {
+        $instance = Tinebase_EmailUser_Factory::getInstance('Controller_Message');
+        
+        $this->assertInstanceOf('Tinebase_Controller_Record_Abstract', $instance);
+    }
+}
index d023d52..3b81b23 100644 (file)
@@ -649,7 +649,9 @@ class Tinebase_Frontend_JsonTest extends TestCase
         $this->assertEquals('sclever', Tinebase_Core::getUser()->accountLoginName);
         $this->assertEquals('sclever', Tinebase_Session::getSessionNamespace()->currentAccount->accountLoginName);
         
+        // reset to original user
         Tinebase_Controller::getInstance()->initUser($this->_originalTestUser, /* $fixCookieHeader = */ false);
+        Tinebase_Session::getSessionNamespace()->userAccountChanged = false;
     }
     
     /**
diff --git a/tests/tine20/Tinebase/Server/AllServerTests.php b/tests/tine20/Tinebase/Server/AllServerTests.php
new file mode 100644 (file)
index 0000000..af7a8ab
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ *
+ */
+class Tinebase_Server_AllServerTests
+{
+    public static function suite() 
+    {
+        $suite = new PHPUnit_Framework_TestSuite('Tine 2.0 Tinebase All Server Tests');
+        $suite->addTestSuite('Tinebase_Server_WebDAVTests');
+        
+        return $suite;
+    }
+}
diff --git a/tests/tine20/Tinebase/Server/AllTests.php b/tests/tine20/Tinebase/Server/AllTests.php
new file mode 100644 (file)
index 0000000..50e7e2a
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ *
+ */
+class Tinebase_Server_AllTests
+{
+    public static function suite() 
+    {
+        $suite = new PHPUnit_Framework_TestSuite('Tine 2.0 Tinebase All Server Tests');
+        $suite->addTestSuite('Tinebase_Server_Plugin_AllTests');
+        
+        return $suite;
+    }
+}
diff --git a/tests/tine20/Tinebase/Server/Plugin/AllTests.php b/tests/tine20/Tinebase/Server/Plugin/AllTests.php
new file mode 100644 (file)
index 0000000..400b665
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ *
+ */
+class Tinebase_Server_Plugin_AllTests
+{
+    public static function suite() 
+    {
+        $suite = new PHPUnit_Framework_TestSuite('Tine 2.0 Tinebase All Server Plugin Tests');
+        $suite->addTestSuite('Tinebase_Server_Plugin_HttpTests');
+        $suite->addTestSuite('Tinebase_Server_Plugin_JsonTests');
+        $suite->addTestSuite('Tinebase_Server_Plugin_WebDAVTests');
+        
+        return $suite;
+    }
+}
diff --git a/tests/tine20/Tinebase/Server/Plugin/HttpTests.php b/tests/tine20/Tinebase/Server/Plugin/HttpTests.php
new file mode 100644 (file)
index 0000000..9c898d6
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * Test class for Tinebase_Server_Plugin_Http
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ */
+class Tinebase_Server_Plugin_HttpTests extends TestCase
+{
+    /**
+     * test general functionality of Tinebase_Server_Plugin_Http
+     */
+    public function testServer()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php?frontend=webdav HTTP/1.1\r
+Host: localhost\r
+User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0 Lightning/1.7\r
+EOS
+        );
+        
+        $server = Tinebase_Server_Plugin_Http::getServer($request);
+        
+        $this->assertInstanceOf('Tinebase_Server_Http', $server);
+    }
+}
diff --git a/tests/tine20/Tinebase/Server/Plugin/JsonTests.php b/tests/tine20/Tinebase/Server/Plugin/JsonTests.php
new file mode 100644 (file)
index 0000000..d380177
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * Test class for Tinebase_Server_Plugin_Json
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ */
+class Tinebase_Server_Plugin_JsonTests extends TestCase
+{
+    /**
+     * test with ContentType header set to application/json
+     */
+    public function testServerContentType()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php HTTP/1.1\r
+Host: localhost\r
+Content-Type: application/json\r
+User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0 Lightning/1.7\r
+EOS
+        );
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('Tinebase_Server_Json', $server);
+    }
+    
+    /**
+     * test with ACCESS-CONTROL-REQUEST-METHOD header set
+     */
+    public function testServerCORSHeader()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php HTTP/1.1\r
+Host: localhost\r
+ACCESS-CONTROL-REQUEST-METHOD: application/json\r
+User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0 Lightning/1.7\r
+EOS
+        );
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('Tinebase_Server_Json', $server);
+    }
+    
+    /**
+     * test with post parameter requestType set to JSON
+     */
+    public function testServerPostParameter()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php?requestType=JSON HTTP/1.1\r
+Host: localhost\r
+User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0 Lightning/1.7\r
+EOS
+        );
+        
+        $request->setPost(new Zend\Stdlib\Parameters(array('requestType' => 'JSON')));
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('Tinebase_Server_Json', $server);
+    }
+}
diff --git a/tests/tine20/Tinebase/Server/Plugin/WebDAVTests.php b/tests/tine20/Tinebase/Server/Plugin/WebDAVTests.php
new file mode 100644 (file)
index 0000000..3e95456
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * Test class for Tinebase_Server_Plugin_WebDAV
+ * 
+ * @package     Tinebase
+ * @subpackage  Server
+ */
+class Tinebase_Server_Plugin_WebDAVTests extends TestCase
+{
+    /**
+     * test general functionality of Tinebase_Server_Plugin_WebDAV
+     */
+    public function testServerGetParameter()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php?frontend=webdav HTTP/1.1\r
+Host: localhost\r
+Depth: 0\r
+User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0 Lightning/1.7\r
+EOS
+        );
+        
+        $request->setQuery(new Zend\Stdlib\Parameters(array('frontend' => 'webdav')));
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('Tinebase_Server_WebDAV', $server);
+    }
+}
index a854dfb..02b34ad 100644 (file)
@@ -27,6 +27,7 @@ class Voipmanager_AllTests
         $suite->addTestSuite('Voipmanager_ControllerTest');
         $suite->addTestSuite('Voipmanager_JsonTest');
         $suite->addTestSuite('Voipmanager_SnomTest');
+        $suite->addTestSuite('Voipmanager_Server_PluginTests');
         //$suite->addTestSuite('Voipmanager_Backend_Snom_PhoneTest');
         return $suite;
     }
diff --git a/tests/tine20/Voipmanager/Server/PluginTests.php b/tests/tine20/Voipmanager/Server/PluginTests.php
new file mode 100644 (file)
index 0000000..76d9d7e
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Tine 2.0 - http://www.tine20.org
+ * 
+ * @package     Voipmanager
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
+ * @copyright   Copyright (c) 2015-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Lars Kneschke <l.kneschke@metaways.de>
+ */
+
+/**
+ * Test class for Voipmanager_Server_Plugin
+ * 
+ * @package     Voipmanager
+ * @subpackage  Server
+ */
+class Voipmanager_Server_PluginTests extends TestCase
+{
+    /**
+     * test general functionality of Voipmanager_Server_Plugin
+     */
+    public function testServerUserAgentSnom()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php?frontend=activesync HTTP/1.1\r
+Host: localhost\r
+User-Agent: Mozilla/4.0 (compatible; snom320-SIP 8.4.35 1.1.3-n)\r
+EOS
+        );
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('Voipmanager_Server_Snom', $server);
+    }
+    
+    /**
+     * test general functionality of Voipmanager_Server_Plugin
+     */
+    public function testServerUserAgentAsterisk()
+    {
+        $request = \Zend\Http\PhpEnvironment\Request::fromString(<<<EOS
+POST /index.php?frontend=activesync HTTP/1.1\r
+Host: localhost\r
+User-Agent: asterisk-libcurl-agent/1.0\r
+EOS
+        );
+        
+        $server = Tinebase_Core::getDispatchServer($request);
+        
+        $this->assertInstanceOf('Voipmanager_Server_Asterisk', $server);
+    }
+}
index eb523b5..31d0632 100644 (file)
@@ -31,7 +31,7 @@ class Zend_Db_SelectTest extends TestCase
             $this->assertEquals(' ORDER BY `id; SLEEP(1)` ASC', $select->__toString());
         } else if (Tinebase_Core::getDb() instanceof Zend_Db_Adapter_Pdo_Pgsql) {
             $select->order('id; SELECT PG_SLEEP(5)');
-            $this->assertEquals(' ORDER BY `id; SELECT PG_SLEEP(5)` ASC', $select->__toString());
+            $this->assertEquals(' ORDER BY "id; SELECT PG_SLEEP(5)" ASC', $select->__toString());
         } else {
             $this->markTestSkipped('no test for this adapter yet');
         }
diff --git a/tests/tine20/bootstrap.php b/tests/tine20/bootstrap.php
new file mode 100644 (file)
index 0000000..51968a6
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+require_once '../../tine20/bootstrap.php';
+
+// add path the local directory
+$autoloader->add('', array(__DIR__));
+
+define('PATH_TO_REAL_DIR', dirname(__FILE__). '/../../tine20');
+define('PATH_TO_TINE_LIBRARY', dirname(__FILE__). '/../../tine20/library');
+define('PATH_TO_TEST_DIR', dirname(__FILE__));
+
+// phpunit wants to handle the errors / report all errors + restore the default error handler
+error_reporting(E_ALL | E_STRICT);
+restore_error_handler();
+
+// disable sending cookies
+Zend_Session::setOptions(array(
+    'use_cookies'      => 0,
+    'use_only_cookies' => 0
+));
index d00f7d1..e3707f1 100644 (file)
@@ -5,7 +5,8 @@
          convertWarningsToExceptions="true"
          processIsolation="false"
          stopOnFailure="false"
-         syntaxCheck="false">
+         syntaxCheck="false"
+         bootstrap="bootstrap.php">
     <listeners>
         <listener class="LogListener" file="LogListener.php" />
     </listeners>
index 0f5fd42..3f69956 100644 (file)
@@ -127,6 +127,15 @@ class ActiveSync_Config extends Tinebase_Config_Abstract
     private static $_instance = NULL;
     
     /**
+     * server classes
+     *
+     * @var array
+     */
+    protected static $_serverPlugins = array(
+        'ActiveSync_Server_Plugin' => 50
+    );
+    
+    /**
      * the constructor
      *
      * don't use the constructor. use the singleton 
diff --git a/tine20/ActiveSync/Server/Plugin.php b/tine20/ActiveSync/Server/Plugin.php
new file mode 100644 (file)
index 0000000..6941aec
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Tine 2.0
+ *
+ * @package     ActiveSync
+ * @subpackage  Server
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
+ * @copyright   Copyright (c) 2008-2015 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2015 Serpro (http://www.serpro.gov.br)
+ * @author      Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
+ */
+
+/**
+ * server plugin to dispatch ActiveSync requests
+ *
+ * @package     ActiveSync
+ * @subpackage  Server
+ */
+class ActiveSync_Server_Plugin implements Tinebase_Server_Plugin_Interface
+{
+    /**
+     * (non-PHPdoc)
+     * @see Tinebase_Server_Plugin_Interface::getServer()
+     */
+    public static function getServer(\Zend\Http\Request $request)
+    {
+        if ((isset($_SERVER['REDIRECT_ACTIVESYNC']) && $_SERVER['REDIRECT_ACTIVESYNC'] == 'true') || // legacy
+            ($request->getQuery('frontend') === 'activesync')
+        ) {
+            return new ActiveSync_Server_Http();
+        }
+    }
+}
index e82f939..7841222 100644 (file)
@@ -48,4 +48,14 @@ class ActiveSync_Setup_Update_Release8 extends Setup_Update_Abstract
 
         $this->setApplicationVersion('ActiveSync', '8.2');
     }
+    
+    /**
+     * update to 9.0
+     *
+     * @return void
+     */
+    public function update_2()
+    {
+        $this->setApplicationVersion('ActiveSync', '9.0');
+    }
 }
index 38d05f5..8e51725 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <application>
     <name>ActiveSync</name>
-    <version>8.2</version>
+    <version>9.0</version>
     <order>90</order>
     <depends>
         <application>Tinebase</application>
index d45faa8..c4d2f39 100644 (file)
@@ -4,8 +4,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2012-04-02 13:30+0000\n"
-"Last-Translator: Cornelius Weiss <c.weiss@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: Bulgarian (http://www.transifex.com/projects/p/tine20/language/bg/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -16,6 +16,107 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
+msgid "Policy"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:73 js/EditDialog.js:104
+msgid "AS Version"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:74 js/EditDialog.js:110
+msgid "Useragent"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:75 js/EditDialog.js:116
+msgid "Model"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:76 js/EditDialog.js:122
+msgid "IMEI"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
+msgid "Friendly Name"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
+msgid "OS"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:79 js/EditDialog.js:140
+msgid "OS Language"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:80 js/EditDialog.js:146
+msgid "Phonenumber"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:81
+msgid "Ping Lifetime"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:82
+msgid "Ping Folder"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:83
+msgid "Remote Wipe"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:84
+msgid "Calendarfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:85
+msgid "Contactsfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:86
+msgid "Emailfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:87
+msgid "Tasksfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:88
+msgid "Last Ping"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:97
+msgid "Quicksearch"
+msgstr ""
+
 #: js/Model.js:42
 msgid "Device"
 msgid_plural "Devices"
@@ -60,6 +161,12 @@ msgstr ""
 msgid "Set Sync Filter"
 msgstr ""
 
+#: js/SyncDevices.js:70
+msgid "SyncDevice"
+msgid_plural "SyncDevices"
+msgstr[0] ""
+msgstr[1] ""
+
 #: Preference.php:75
 msgid "Default Addressbook"
 msgstr ""
index 0f51a5c..19b29db 100644 (file)
@@ -4,8 +4,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2012-04-02 13:30+0000\n"
-"Last-Translator: Cornelius Weiss <c.weiss@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: Catalan (http://www.transifex.com/projects/p/tine20/language/ca/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -16,6 +16,107 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
+msgid "Policy"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:73 js/EditDialog.js:104
+msgid "AS Version"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:74 js/EditDialog.js:110
+msgid "Useragent"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:75 js/EditDialog.js:116
+msgid "Model"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:76 js/EditDialog.js:122
+msgid "IMEI"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
+msgid "Friendly Name"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
+msgid "OS"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:79 js/EditDialog.js:140
+msgid "OS Language"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:80 js/EditDialog.js:146
+msgid "Phonenumber"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:81
+msgid "Ping Lifetime"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:82
+msgid "Ping Folder"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:83
+msgid "Remote Wipe"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:84
+msgid "Calendarfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:85
+msgid "Contactsfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:86
+msgid "Emailfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:87
+msgid "Tasksfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:88
+msgid "Last Ping"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:97
+msgid "Quicksearch"
+msgstr ""
+
 #: js/Model.js:42
 msgid "Device"
 msgid_plural "Devices"
@@ -60,6 +161,12 @@ msgstr ""
 msgid "Set Sync Filter"
 msgstr ""
 
+#: js/SyncDevices.js:70
+msgid "SyncDevice"
+msgid_plural "SyncDevices"
+msgstr[0] ""
+msgstr[1] ""
+
 #: Preference.php:75
 msgid "Default Addressbook"
 msgstr ""
index 4518b00..4767cc2 100644 (file)
@@ -4,8 +4,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2013-11-20 13:09+0000\n"
-"Last-Translator: pschuele <p.schuele@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: Czech (http://www.transifex.com/projects/p/tine20/language/cs/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -16,6 +16,107 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
+msgid "Policy"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:73 js/EditDialog.js:104
+msgid "AS Version"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:74 js/EditDialog.js:110
+msgid "Useragent"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:75 js/EditDialog.js:116
+msgid "Model"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:76 js/EditDialog.js:122
+msgid "IMEI"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
+msgid "Friendly Name"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
+msgid "OS"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:79 js/EditDialog.js:140
+msgid "OS Language"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:80 js/EditDialog.js:146
+msgid "Phonenumber"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:81
+msgid "Ping Lifetime"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:82
+msgid "Ping Folder"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:83
+msgid "Remote Wipe"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:84
+msgid "Calendarfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:85
+msgid "Contactsfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:86
+msgid "Emailfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:87
+msgid "Tasksfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:88
+msgid "Last Ping"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:97
+msgid "Quicksearch"
+msgstr ""
+
 #: js/Model.js:42
 msgid "Device"
 msgid_plural "Devices"
@@ -61,6 +162,13 @@ msgstr "resetován"
 msgid "Set Sync Filter"
 msgstr "Nastavit synchronizační filtr"
 
+#: js/SyncDevices.js:70
+msgid "SyncDevice"
+msgid_plural "SyncDevices"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 #: Preference.php:75
 msgid "Default Addressbook"
 msgstr ""
index 411169a..9a68e3e 100644 (file)
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2013-11-20 13:09+0000\n"
-"Last-Translator: pschuele <p.schuele@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: Danish (http://www.transifex.com/projects/p/tine20/language/da/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -18,6 +18,107 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
+msgid "Policy"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:73 js/EditDialog.js:104
+msgid "AS Version"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:74 js/EditDialog.js:110
+msgid "Useragent"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:75 js/EditDialog.js:116
+msgid "Model"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:76 js/EditDialog.js:122
+msgid "IMEI"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
+msgid "Friendly Name"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
+msgid "OS"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:79 js/EditDialog.js:140
+msgid "OS Language"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:80 js/EditDialog.js:146
+msgid "Phonenumber"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:81
+msgid "Ping Lifetime"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:82
+msgid "Ping Folder"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:83
+msgid "Remote Wipe"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:84
+msgid "Calendarfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:85
+msgid "Contactsfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:86
+msgid "Emailfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:87
+msgid "Tasksfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:88
+msgid "Last Ping"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:97
+msgid "Quicksearch"
+msgstr ""
+
 #: js/Model.js:42
 msgid "Device"
 msgid_plural "Devices"
@@ -62,6 +163,12 @@ msgstr "nulstillede"
 msgid "Set Sync Filter"
 msgstr "Sæt Sync Filer"
 
+#: js/SyncDevices.js:70
+msgid "SyncDevice"
+msgid_plural "SyncDevices"
+msgstr[0] ""
+msgstr[1] ""
+
 #: Preference.php:75
 msgid "Default Addressbook"
 msgstr "Standard Adressebog"
index 9838a7e..0ec6290 100644 (file)
@@ -1,34 +1,35 @@
-#
+# 
 # Translators:
 # lkneschke <l.kneschke@metaways.de>, 2013
 # pschuele <p.schuele@metaways.de>, 2012
+# sstamer <s.stamer@metaways.de>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2015-05-08 15:33+0100\n"
+"PO-Revision-Date: 2015-04-28 08:01+0000\n"
 "Last-Translator: sstamer <s.stamer@metaways.de>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/tine20/language/"
-"de/)\n"
-"Language: de\n"
+"Language-Team: German (http://www.transifex.com/projects/p/tine20/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Country: GB\n"
+"X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
-"X-Generator: Poedit 1.5.4\n"
 
 #: Acl/Rights.php:104
 msgid "Manage ActiveSync devices"
-msgstr "ActiveSync Geräte verwalten"
+msgstr "ActiveSync Endgeräte verwalten"
 
 #: Acl/Rights.php:105
 msgid "See, edit and delete ActiveSync devices"
-msgstr "ActiveSync Geräte sehen, verwalten und löschen"
+msgstr "ActiveSync Endgeräte sehen, verwalten und löschen"
 
 #: js/AdminPanel.js:45
 msgid "Sync Devices"
-msgstr "Sync Geräte"
+msgstr "Sync Endgeräte"
 
 #: js/SyncDevicesGridPanel.js:68
 msgid "ID"
@@ -37,15 +38,15 @@ msgstr "ID"
 #: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
 #: js/EditDialog.js:72
 msgid "Device ID"
-msgstr "Geräte ID"
+msgstr "Endgeräte ID"
 
 #: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
 msgid "Devicetype"
-msgstr "Gerätetyp"
+msgstr "Endgerät Typ"
 
 #: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
 msgid "Owner"
-msgstr "Eigentümer"
+msgstr "Besitzer"
 
 #: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
 msgid "Policy"
@@ -69,7 +70,7 @@ msgstr "IMEI"
 
 #: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
 msgid "Friendly Name"
-msgstr "Friendly Name"
+msgstr ""
 
 #: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
 msgid "OS"
@@ -85,15 +86,15 @@ msgstr "Telefonnummer"
 
 #: js/SyncDevicesGridPanel.js:81
 msgid "Ping Lifetime"
-msgstr "Ping Laufzeit"
+msgstr ""
 
 #: js/SyncDevicesGridPanel.js:82
 msgid "Ping Folder"
-msgstr "Ping Ordner"
+msgstr ""
 
 #: js/SyncDevicesGridPanel.js:83
 msgid "Remote Wipe"
-msgstr "Gerät löschen"
+msgstr ""
 
 #: js/SyncDevicesGridPanel.js:84
 msgid "Calendarfilter"
@@ -166,8 +167,8 @@ msgstr "Setze Sync Filter"
 #: js/SyncDevices.js:70
 msgid "SyncDevice"
 msgid_plural "SyncDevices"
-msgstr[0] "Sync Gerät"
-msgstr[1] "Sync Geräte"
+msgstr[0] ""
+msgstr[1] ""
 
 #: Preference.php:75
 msgid "Default Addressbook"
index 8cc1340..8faddb4 100644 (file)
@@ -5,8 +5,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2013-11-20 13:09+0000\n"
-"Last-Translator: pschuele <p.schuele@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: Greek (Greece) (http://www.transifex.com/projects/p/tine20/language/el_GR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -17,6 +17,107 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
+msgid "Policy"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:73 js/EditDialog.js:104
+msgid "AS Version"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:74 js/EditDialog.js:110
+msgid "Useragent"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:75 js/EditDialog.js:116
+msgid "Model"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:76 js/EditDialog.js:122
+msgid "IMEI"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
+msgid "Friendly Name"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
+msgid "OS"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:79 js/EditDialog.js:140
+msgid "OS Language"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:80 js/EditDialog.js:146
+msgid "Phonenumber"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:81
+msgid "Ping Lifetime"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:82
+msgid "Ping Folder"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:83
+msgid "Remote Wipe"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:84
+msgid "Calendarfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:85
+msgid "Contactsfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:86
+msgid "Emailfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:87
+msgid "Tasksfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:88
+msgid "Last Ping"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:97
+msgid "Quicksearch"
+msgstr ""
+
 #: js/Model.js:42
 msgid "Device"
 msgid_plural "Devices"
@@ -61,6 +162,12 @@ msgstr ""
 msgid "Set Sync Filter"
 msgstr ""
 
+#: js/SyncDevices.js:70
+msgid "SyncDevice"
+msgid_plural "SyncDevices"
+msgstr[0] ""
+msgstr[1] ""
+
 #: Preference.php:75
 msgid "Default Addressbook"
 msgstr ""
index 5e745b0..e9e7189 100644 (file)
@@ -4,8 +4,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2013-11-20 13:09+0000\n"
-"Last-Translator: pschuele <p.schuele@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: English (Australia) (http://www.transifex.com/projects/p/tine20/language/en_AU/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -16,6 +16,107 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98
+msgid "Policy"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:73 js/EditDialog.js:104
+msgid "AS Version"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:74 js/EditDialog.js:110
+msgid "Useragent"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:75 js/EditDialog.js:116
+msgid "Model"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:76 js/EditDialog.js:122
+msgid "IMEI"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:77 js/EditDialog.js:128
+msgid "Friendly Name"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:78 js/EditDialog.js:134
+msgid "OS"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:79 js/EditDialog.js:140
+msgid "OS Language"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:80 js/EditDialog.js:146
+msgid "Phonenumber"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:81
+msgid "Ping Lifetime"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:82
+msgid "Ping Folder"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:83
+msgid "Remote Wipe"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:84
+msgid "Calendarfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:85
+msgid "Contactsfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:86
+msgid "Emailfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:87
+msgid "Tasksfilter"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:88
+msgid "Last Ping"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:97
+msgid "Quicksearch"
+msgstr ""
+
 #: js/Model.js:42
 msgid "Device"
 msgid_plural "Devices"
@@ -60,6 +161,12 @@ msgstr "resetted"
 msgid "Set Sync Filter"
 msgstr "Set Sync Filter"
 
+#: js/SyncDevices.js:70
+msgid "SyncDevice"
+msgid_plural "SyncDevices"
+msgstr[0] ""
+msgstr[1] ""
+
 #: Preference.php:75
 msgid "Default Addressbook"
 msgstr "Default Addressbook"
index 372e3d4..9bed1b8 100644 (file)
@@ -1,11 +1,12 @@
 # 
 # Translators:
+# Ingo Ratsdorf <ingo@envirology.co.nz>, 2014-2015
 msgid ""
 msgstr ""
 "Project-Id-Version: Tine 2.0\n"
 "POT-Creation-Date: 2008-05-17 22:12+0100\n"
-"PO-Revision-Date: 2012-04-02 13:30+0000\n"
-"Last-Translator: Cornelius Weiss <c.weiss@metaways.de>\n"
+"PO-Revision-Date: 2015-04-28 07:43+0000\n"
+"Last-Translator: sstamer <s.stamer@metaways.de>\n"
 "Language-Team: English (New Zealand) (http://www.transifex.com/projects/p/tine20/language/en_NZ/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -16,110 +17,217 @@ msgstr ""
 "X-Poedit-Language: en\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+#: Acl/Rights.php:104
+msgid "Manage ActiveSync devices"
+msgstr ""
+
+#: Acl/Rights.php:105
+msgid "See, edit and delete ActiveSync devices"
+msgstr ""
+
+#: js/AdminPanel.js:45
+msgid "Sync Devices"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:68
+msgid "ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:69 js/SyncDevicesGridPanel.js:98
+#: js/EditDialog.js:72
+msgid "Device ID"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:70 js/EditDialog.js:79
+msgid "Devicetype"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:71 js/EditDialog.js:86
+msgid "Owner"
+msgstr ""
+
+#: js/SyncDevicesGridPanel.js:72 js/EditDialog.js:98