Coder Social home page Coder Social logo

agendav / agendav Goto Github PK

View Code? Open in Web Editor NEW
646.0 646.0 111.0 11.69 MB

A CalDAV web client similar to Google Calendar

Home Page: https://github.com/agendav/agendav/

License: GNU General Public License v3.0

JavaScript 62.58% PHP 30.35% CSS 2.71% HTML 0.60% Shell 0.01% Jinja 3.08% Less 0.68%
agendav caldav calendar php

agendav's Introduction

AgenDAV - CalDAV web client

Maintenance mode Build Status Docs Made With License Contribution

AgenDAV is a CalDAV web client which features an AJAX interface to allow users to manage their own calendars and shared ones.

Screenshot

Requirements

AgenDAV requires:

  • A CalDAV server like Baïkal, DAViCal, Radicale, etc
  • A web server
  • PHP >= 7.2.0
  • PHP ctype extension
  • PHP mbstring extension
  • PHP mcrypt extension
  • PHP cURL extension
  • A database supported by Doctrine DBAL like MySQL, PostgreSQL, SQLite
  • Optional: nodejs & npm to build assets (releases include a build)

Documentation

https://agendav.readthedocs.io/

Installation

See installation guide

Docker Image

Agendav offers no official Docker image. However, you may use unofficial docker images provided by the community instead, for example https://ghcr.io/nagimov/agendav-docker.

Source

https://github.com/agendav/agendav

License

GNU General Public License v3.0 or later https://spdx.org/licenses/GPL-3.0-or-later.html

Changelog

See CHANGELOG.md

Maintenance Mode

AgenDAV is in maintenance mode currently. This means that the maintainers choose to prioritize stability and compatibility over new features for now.

  • There is no active development & new major features are not planned
  • New features may be added by PRs however
    • New features may be proposed in issues tickets, send as Pull Requests, and the maintainers will review and presumably merge them
  • PRs for bugfixes are welcome and will be reviewed & merged
  • PRs to keep the software compatible with new PHP versions or the like are welcome and will be reviewed & merged
  • Critical security concerns will be addressed

Contribution

Contributions are welcome!

agendav's People

Contributors

benyanke avatar chrissten avatar dilyanpalauzov avatar jaakristioja avatar jeromelebleu avatar jorgelzpz avatar julienmalik avatar mmoll avatar morfran avatar nagimov avatar oemel09 avatar pixelbrackets avatar rudloff avatar simonsimcity avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

agendav's Issues

Error on colorchange of shared calendar

Changing the color of a shared calendar gives an "Interface Error". The log tells:

ERROR - 2012-08-09 15:10:25 --> sany@**** Call to modify_calendar() with shared calendar, but no sid was found [calendar/modify]

Broken eventlist UI

The Event-list UI looks broken since one of the last commits. The Browser is Google Chrome Version 21.0.1180.79 on Debian Testing.

Support for muliple calendar subscriptions

AgenDAV currently allows a user to subscribe to only one calendar (url/login/password).

It would be a great enhancement to provide support for subscribing to multiple calendars.
Access control could be delegated to the caldav servers.
The biggest issue I see is providing a means for decide which calendar a given event is written to.

Thanks again for a great looking web interface.

Deleting a calendar produces an error

When I delete a calendar from AgenDAV, I get this error:

Error deleting calendar

Unknown error, HTTP code=200

Obviously, an HTTP 200 is not an error -- the calendar is deleted properly, despite the "error." I'm using HEAD with radicale.

Table 'prefs' doesn't exist

Hm looks like the schema for table 'prefs' is missing - can you please provide it?

Table 'prefs' doesn't exist
Filename: /agendav/web/application/models/userpref.php

Line Number: 35

Caldav right for create collection

Hello,
I have an user created in caldav, with only read permission, but when i log in with this user into agendav,
i can create and save new calendar, i don't understand why ?
Bug into agendav or webcal ?

Current develop branch does not work with Davical

The actual develop branch (1.2.1-312-g0607ffa) fails to work with a Davical installation. It tells that auth was incorrect.

It seems that the initial option request with DoOptionsRequestAndGetDAVHeader returns an empty response.

The status code from davical is 200 and the release adobo-agendav-1.2.4-0-g3b99ccd works.

Load Delegated Calendars

Please allow the loading of additional calendars for which the user has been delegated access to

Day Numbers clickable

A great feature would be:

when the user clicks the day number in week or month view, that day is shown in day mode.

Agendav misses this feature and should have it soon.

Localization support

Currently AgenDAV is only available in Spanish. Code and log messages is written in English, but UI isn't available on other languages right now.

[wish] allow 'multiweek' view

I would like to see a multiweek view in agendav, similar to the one that can be found in lightning: four rows/weeks are shown with the current week in the top row.

thanks a lot for agendav!

cheers,
stefan

Short events get displayed wrong

Events which last 30 minutes are too small to contain all the text in agenda view. They should be shortened to make them usable.

Non-blocking synchronize

Update: whittling this down to a single issue, since fetching events in the background will happen when caching does.

Blocking out the whole calendar interface while fetching events is quite jarring from a user experience perspective, particularly over a slower connection. Would putting the "loading" dialog somewhere less obtrusive and simply restarting it if the user made another selection necessitating a refresh (e.g. clicked the "next month" button)? Also, it seems like users will need to access the next couple of months commonly enough that it might be worth fetching them when the interface is first loaded -- would this affect performance very much?

CodeIgniter CSRF should be handled another way

Currently every request to AgenDAV is done by JS using one of the following two ways:

  1. 'on-the-fly' form, generated just to have a CSRF token. Actions that use this method: resize, drag, delete...
  2. A 'real' form, generated by server and returned to JS via AJAX

JS should be able to generate its own forms, and get CSRF token from browser cookies, for example. This can be achieved by using a framework like Backbone.js.

Translate message issue.

Hi Jorge

When you clic on the "shared" tab of your agenda, and if it's not shared, this message is not referenced in traduction.

"This calendar is not being shared with anyone".

Can you add this in Transifex ? ;)

Regards,

User preferences

Add the following parameters to the Preferences page:

  • Time zone
  • Language
  • Time/date formats
  • Preferred first day of week

Use multiple CalDAV servers

I have calendars on multiple CalDAV servers. I believe AgenDAV currently only allows me to connect to a single CalDAV server at a time. It would be nice if I could use it as a client for all of my calendars, wherever they are located. This would involve moving the CalDAV server configuration out of the config files and into the user interface, so that the user could add remove CalDAV servers.

Alarms and reminders

Implement VALARM support:

  • ACTION: DISPLAY should be handled by AgenDAV
  • ACTION: EMAIL should be handled outside AgenDAV (direct DAViCal query?)

More sharing options

AgenDAV currently supports read+write calendar sharing. It would be interesting to implement per-share privileges

Changing calendar color results in HTTP 500

When you save a calendar's settings after changing the calendar's color, this error is displayed:

Invalid value

Unknown error, HTTP code=500

...and the dialog box does not disappear. However, the color change is saved.

Problem with duration of all-day events

Let say that we want to add event that lasts 3 days. We have two ways:

  • Select 3 days long period of time on the calendar, dialog box will pop out.
  • Fill in all details, choose ‘All day’ option and hit save.
    Or
  • Click on start date.
  • Fill in all details, select ‘All day’ and choose end date.
  • Hit save.

These two scenarios gave us the same result – 3 days period of time is displayed as 2 days and saved in davical’s database as 2 days event. This problem not occurs when we add long events but with giving particular start and end hours.
Besides that if someone want to add all-day even that lasts 1 day, in ‘New event’ dialog start and end date differs (end date = start date + 1), they shouldn’t be the same? Possibility to add an all-day event with the same start and end dates is much more intuitive, and is used in other well-known calendars such as Google or Lightening.

Copy events

It would be great to have the ability to copy an event from a calendar to another, when a user has access to more than one calendar

Vertical space for the calendar view

It would be nice to move the bottom of the page (AgenDAV's logo) to gain vertical space for the calendar.

Maybe you can put the logo just below the list of calendars.

Regards, Victor

Forbid writes on calendar when calendar is read-only (admin profile)

Hi,

This is not a critical issue. Sorry for my poor EN!

  • Last commit of GIT installed
  • My user is declared as administrator in davical server.
  • My user have access to different shared calendar (read only).

I can create events (and i shouldn't) on all the read only shared calendars because I can choose the read only calendar on "create an event" into the calendars list.
For the deletion of events, i can't (no delete button).

Davical allow full writes for administrators, so It's normal that the davical server don't cry when you create/delete event on any calendars of the server.

I think that the best way might be to rebuild the calendar list of "create an event" depending of the access writes of each shared calendars.

What do you think?

Regards,

Adrien

Latest Git version doesn't work with calendarserver

When using current Git HEAD with calendarserver (2.4.dfsg-6 from Debian Squeeze), AgenDAV fails to load calendar contents, with error message:

"Interface error
Error loading events from calendar oliver:calendar"

It shows the calendar (displayname and color) but no events; so basic communication works.

Also, it works fine with version 1.2.3.

Log from AgenDAV shows this:
ERROR - 2011-12-15 00:15:44 --> Invalid CalDAV server
ERROR - 2011-12-15 00:15:44 --> [email protected] Possible invalid CalDAV server [caldav2json/events]

Log from calendarserver shows this:
192.168.0.43 - oliver [15/Dec/2011:00:15:39 +0200] "OPTIONS /calendars/users/oliver/ HTTP/1.1" 200 0 "-" "DAViCalClient" i=8008 t=69.8 or=1
192.168.0.43 - oliver [15/Dec/2011:00:15:43 +0200] "PROPFIND /calendars/users/oliver/ HTTP/1.1" 207 3343 "-" "DAViCalClient" i=8008 t=86.2 or=1
192.168.0.43 - - [15/Dec/2011:00:15:44 +0200] "OPTIONS /calendars/users/oliver/calendar HTTP/1.1" 301 175 "-" "DAViCalClient" i=8008 t=35.9 or=1

I would guess the HTTP 301 redirect is a problem. Maybe it happens due to commit 803b5e6 which wasn't present in version 1.2.3. Also, that version showed similar problems with HTTP 301 in other places (PROPPATCH).

500 on calendar/modify

The latest develop branch returns a 500 internal server error from the POST request modifying a calendar. This even happens on a fresh database and no changes in the calendar dialog (simply click "save")

Automatic Refresh of Calendars

It would be nice if there is an automatic refresh of the calendars instead of hitting the button every time.

Automatic refresh can be on opening a connection to SabreDAV in the background and listening for new events for example. Aor just refreshing the page after x sconds/minutes.

Take advantage of "ymd" label in table view.

Hi Jorge, hi team.

Well done for the new feature!

In the "Next month" area in table view (fr_FR) i have:

Avr 10, 2012 Event1
Avr 13, 2012 15:00 Event2
Avr 16, 2012 - Avr 19, 2012 Event3

Is there a way to implemant "ymd" option of config.php into table view?

For exemple if we have:

$config'[default_date_format'] = 'dmy';

The result should be (fr_FR)
10 Avr, 2012 Event1
13 Avr, 2012 15:00 Event2
16 Avr, 2012 - 19 Avr, 2012 Event3

Regards,
Adrien

Zimbra support patch

I just setup AgenDAV in front of a Zimbra (7) server. Works well now, but I had to manually patch

libs/davical/inc/caldav-client-v2.php : Zimbra sends "Allow: ..." answer on multiple lines, preg_replaces only gave the last line in $options_header in DoOptionsRequest(). AgenDAV could not get all properties and gave authentication error.

BTW, Zimbra Caldav urls are (add them to the doc) :

$config['caldav_principal_url'] = 'https://zimbra.server/dav/%u/';
$config['caldav_calendar_url'] = 'https://zimbra.server/dav/%s/';

patch :

*** adobo-agendav-d1870bb/libs/davical/inc/caldav-client-v2.php Mon Jan 16 00:14:36 2012
--- agendav/libs/davical/inc/caldav-client-v2.php Wed Jun 6 19:37:52 2012


*** 352,356 ****
$this->body = "";
$headers = $this->DoRequest($url);
! $options_header = preg_replace( '/^.Allow: ([a-z, ]+)\r?\n./is', '$1', $headers );
$options = array_flip( preg_split( '/[, ]+/', $options_header ));
return $options;
--- 351,360 ----
$this->body = "";
$headers = $this->DoRequest($url);
! $headers = str_replace("\r\n", "\n", $headers);
! $ar_headers = explode("\n", $headers);
! $options_header = "";
! foreach ($ar_headers as $cur_headers) {
! $options_header .= preg_replace( '/^.Allow: ([a-z, ]+)\r?\n./is', '$1', $cur_headers );
! }
$options = array_flip( preg_split( '/[, ]+/', $options_header ));
return $options;

Works well now. Sorry for lack of proper GITting I am in a hurry ....

Delete one instance of a repeated event (occurences).

Hi team.

When you add a repeated event, for exemple:

  • Repetition: each week
  • To 31/12/2012

After that, you have no possibility to delete only one event of this repeated event.

You can just delete all instances...

Is-there a solution to permit the deletion of only one occurence, as ical or lightning do?

In lightning you have the choice:

  • Edit just this occurrence
  • Edit all occurences

Regards,

Recurrence exceptions

Give users the ability to define recurrence exceptions or remove single recurrence instances

Add a different link for the logo on login page

Hi Jorge, Hi team.

All is in the title!

It could be cool to have a different pass to chose a different logo on the login page.

For exemple, I had hard-coded to change the logo size, it was very small! (but in a bad way.... ;) ).

Regards,

Adrien

Exemple in config.php:

/*
Logo
--------------------------------------------------------------------------

|
| Filename from public/img
|
*/
$config['logo'] = 'agendav.png';
| Filename from public/img. Only for login page.
| $config['logo'] is chosen by default.
$config['login_logo'] = 'agendav_big.png';

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.