Giter Club home page Giter Club logo

open-web-calendar's Introduction

Open Web Calendar

GitHub Workflow Status

You might want to:

Python: 3.8, 3.9, 3.10, 3.11, 3.12

There are several commercial solutions which allow embedding of calendars into my website. I only have a link to an ICS file and want to show a nice-looking calendar on my site. Browser-only calendars usually have the problem that many ICS files can not be accessed (such as ownCloud/nextCloud in my case). I also want to be in control over who knows the people who visit the site and not pass everything to Google. This is a solution in my case which I share with the world. You are free to use it or deploy your own, modify or share it. It works offline and in company networks, too.

Features

  • Embedded calendar
  • Choice of time zone
  • ICS link, best multiple
  • month/week as a view
  • name, time of event, link?
  • showing the time span
  • styling of choice (icon, color, font, ...)

Changelog

The changelog can be found here.

Funding

Logo NLnet: abstract logo of four people seen from above Logo NGI Zero: letterlogo shaped like a tag

This project was funded in 2024 through the NGI0 Core Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme. You might be able to get funded, too!

open-web-calendar's People

Contributors

acestone avatar albanobattistella avatar barnabycollins avatar barnabyshearer avatar comradekingu avatar cyroxx avatar dependabot[bot] avatar edent avatar hsg avatar jit-p avatar joshhazelhurst123 avatar justindhillon avatar mahaesin avatar milotype avatar nathanbnm avatar niccokunzmann avatar oersen avatar onokatio avatar plastictactics avatar qeepoo avatar rezaalmanda avatar strebski avatar themrphantom avatar theolecalvar avatar tmoerschell avatar tomipo avatar vmario89 avatar weblate avatar zyloj 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

open-web-calendar's Issues

allow adding CSS directly

I would like to add CSS with highest priority to as an URL parameter.
This allows customizing the calendar directly through the index page.

fill the JSON specification pre

For users to use the JSON spec,

  • style the spec
  • fill the spec once changes occur

We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

click event and open page

When I click an entry, I would like to be able to view the page it has.
This can be done using the URL property of VEVENT in the ICS file.

  • pass URL parameter to calendar
  • make the heading (summary) clickable

Document endpoints

  • calendar.html
  • calendar.spec
  • calendar.events.json

these endpoints should be documented in the api.md file


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Save HTML embedding

Currently, we embed the HTML of the sources. This is generally okay as we can assume the sources to be trusted by the creator of the calendar. However, the sources could contain HTML text. This text must be escaped and tested for safety.

Ideas:

  1. Allow markdown
  2. Allow plaintext links to be rendered as links. (https://mathiasbynens.be/demo/url-regex)
  3. Only allow certain html elements (this can be created as a library for the public)

We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

AssertionError: Only Gregorian calendars are supported.

https://open-web-calendar.herokuapp.com/calendar.events.json?specification_url=https%3A%2F%2Fraw.githubusercontent.com%2FBrandenburger-Maker%2Fcalendar-federation%2Fmaster%2Fcalendar-configuration.json&timeshift=-60
yields an error:

it looks however as if some calendars do not specify that they are gregorian, like
https://vinnlab.th-wildau.de/events.ics

Can we safely assume that most people use the gregorian calendar scale for ICS?
Yes. https://www.kanzaki.com/docs/ical/calscale.html
As such, None and "GREGORIAN" should be allowed.


We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Calendar Entry differs

Handle Errors

If one calendar cannot be requested, this should be displayed somewhere

127.0.0.1 - - [07/Mar/2019 12:15:39] "GET /calendar.events.json?specification_url=https%3A%2F%2Fraw.githubusercontent.com%2FBrandenburger-Maker%2Fcalendar-federation%2Fmaster%2Fcalendar-configuration.json&timeshift=-60 HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/user/open-web-calendar/app.py", line 219, in get_calendar
    entries = get_events(specification)
  File "/home/user/open-web-calendar/app.py", line 199, in get_events
    for events in events_list:
  File "/opt/anaconda3/lib/python3.6/concurrent/futures/_base.py", line 556, in result_iterator
    yield future.result()
  File "/opt/anaconda3/lib/python3.6/concurrent/futures/_base.py", line 405, in result
    return self.__get_result()
  File "/opt/anaconda3/lib/python3.6/concurrent/futures/_base.py", line 357, in __get_result
    raise self._exception
  File "/opt/anaconda3/lib/python3.6/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/user/open-web-calendar/app.py", line 198, in <lambda>
    events_list = e.map(lambda url: retrieve_calendar(url, specification), urls)
  File "/home/user/open-web-calendar/app.py", line 150, in retrieve_calendar
    calendar_text = get_text_from_url(url)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/flask_caching/__init__.py", line 686, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/user/open-web-calendar/app.py", line 94, in get_text_from_url
    return requests.get(url).text
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/requests/api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/home/user/open-web-calendar/ENV/lib/python3.6/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='vinnlab.th-wildau.de', port=443): Max retries exceeded with url: /events.ics (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7395497a2710>: Failed to establish a new connection: [Errno 111] Connection refused',))

Possible implementations:

  • we display a calendar event that there were connection errors to some calendars
    Errors:
  • calendar source connection, getting ICS file c7dff5e
  • specification not found
  • calendar parsing

We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Add RSS as source

RSS allows us to subscribe to other calendars, see #36.
We can implement RSS parsing and adding RSS events.

dynamically activate plugins

dhtmlx allows for many plugins one can activate.
These can be added to the customization page as a choice.

  • add plugins
  • add javaScript hooks
  • set proper default behavior but also switching them off.

related: #8 #9


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Remove duplicates

When several icals are used as source and some events are duplicate between the two, all events are displayed.

When there is more than one ical as source, there could be a check of identical/similar events to keep only one.

add example themes to index

I would like to choose between different calendar themes.

  • dhtmlx themes
  • a custom theme

We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

title does not update the link and specification

When the title changes, the specification should also change.


We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

fill specification link

the example link to the JSON specification should be filled automatically once the page loads, using a specification which is the default one and the host.

choose between month, week and day view

I would like to specify the default view of the calendar: month, day or week.

  • add parameter description on front page
  • add dropdown for view on front page
  • implement parameter reading of the specification in the configure.js file.

choose google or openstreetmap or none as address search

Events have addresses. These can be searched for by google maps, openstreet map, none at all.
Please provide an option to the user. Default should be openstreetmap.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Allow copying source from other calendars

When we have a federated network like the Makers of brandenburg, we have participants who have their own calendars. I would like to keep the maintenance of the local in once place and the joined calendar to copy just the sources and their configuration from their spec files.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Make index static

The index page is not using the tempate funcitonaity. We can make this more robust by making the file static. It may also allow easier access to the page for people developing it without server installation locally.


We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

configure pop-out box

configure whether you want to see the details box on the calendar when you click an entry.

  • default spec
  • documentation
  • config page
  • JS implementation

We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

provide a complex example

I would like to have a calendar showing different public icals with different colors.

Please provide an example configuration file realizing this.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

provide ical output

I would like to use this software to aggregate different calendars into one.
If it would support rendering to ical, I could use it as input source to other ical based services.

choose different styles

In the specification, I would like

  • add parameter description on front page
  • add dropdown for view on front page
  • read from specification in the template

Add tests

We can add tests to the service. Mostly, they should test whether the dates and the recurrence of events work.

Choose whether to use geo location

Related: #23
We can use the GEO attribute to open the map on a certain position. This position does not need to be precise. We should specify whether to use the geo location. Default would be on as it may be misleading.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Add option to provide configuration yaml url

Consider to provide configuration of the calendar by an URL, pointing to some publicly available yaml or json file.

Benefits:

  • nice support for big calendars
  • add features like templates / color coding of events
  • config file could be group editable beeing served from a github repository

We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

add the JSON specification the configuration page

The calendar can be configured using JSON.

  • Add a JSON file output of the current configuration to index page
  • add an example link to the page which uses thespecification
  • describe what the purpose of this is

Deploy localization

Transifex allows localization of HTML documents as well as JSON documents. We can use that to translate the calendar to different languages.

  • deploy front page to transifex
  • translate the page
  • download the page
  • extract the source strings to another format to include them in the main page - probably yml. #16 (comment)
  • render the front page on the user's language request - dispatch by JS or request language?
  • document how to translate the page
  • link to the calendar translation as this is something different
  • document how to update the translated files.

We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Motivate project

describe, why this project came to be


We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

configure tool tip

configure whether you want to see tool tips on the calendar

  • default spec
  • documentation
  • config page
  • JS implementation

We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Use fullcalendar as event display

Currently, we only provide dhtmlx as output for the calendar.
https://github.com/fullcalendar is an open-source web calendar with many views. We can provide an option to include it. It allows many more views than dhtmlx does.

"template": "dhtmlx.html",

It is quite easy to create a view for this: https://fullcalendar.io/releases/fullcalendar-scheduler/1.9.4/demos/simple.html


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

[HTML/CSS] style front page

The front page has no style yet. If you just learn CSS, your contribution is welcome. This project does not even have styling yet.

Front Page: https://open-web-calendar.herokuapp.com/
Source Code: https://github.com/niccokunzmann/open-web-calendar/blob/master/templates/index.html

The only requirement is that you do not add external sources. If you do, we need to refactor that they are served locally.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Make it more easy to subscribe to different sources

I have noticed several plugins used for calendars.
These plugins have different export functions. Maybe it is a use-case to just input a link to the calendar and
a service tries to import from various locations and check if it has ICAL export.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

add geolocation service option

I would like to filter events on their geographic location.
Add an option to have location resolved by a configurable location resolver, which should return geographic coordinates for a given address / location name.
By using a configurable resolver, users could use their own resolver, which may know special places by name.


We're using [Polar.sh](https://polar.sh/niccokunzmann) so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

allow choosing different languages

Allow choosing different languages available. If languages are not available, they default to English.

Lookup: de_DE, de, EN_US, en or EN_US, en
These languages requested should be included by the template.

  • Add files
  • add parameter description on front page
  • add dropdown for language on front page

add source mapping files

We could use some source mapping files.
These requests 404:

127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /js/dhtmlx/sources/dhtmlxscheduler.js.map HTTP/1.1" 404 -
127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /js/sources/ext/dhtmlxscheduler_recurring.js.map HTTP/1.1" 404 -
127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /js/sources/ext/dhtmlxscheduler_multisource.js.map HTTP/1.1" 404 -
127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /js/sources/ext/dhtmlxscheduler_tooltip.js.map HTTP/1.1" 404 -
127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /css/dhtmlx/imgs_dhx_material/arrow_left.svg HTTP/1.1" 304 -
127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /css/dhtmlx/imgs_dhx_material/arrow_right.svg HTTP/1.1" 304 -
127.0.0.1 - - [17/Feb/2019 00:39:06] "GET /js/sources/ext/dhtmlxscheduler_quick_info.js.map HTTP/1.1" 404 -
127.0.0.1 - - [17/Feb/2019 00:39:07] "GET /js/dhtmlx/sources/locale/locale_de.js.map HTTP/1.1" 404 -

Document how the specification works

Adding some documentation about the specification and the parameters would be helpful.

  • query parameters
  • the role of default_specification.json
  • the specification_url parameter
  • accessing the specification
    • in the templates
    • in app.py
    • in javascript
    • on the front page

Create example specification

An example specification can explain which different attributes are there and what you can use.
It should be added as the EXAMPLE_SPECIFICATION variable.

  • include title
  • include url

Allow discourse as source

Discourse allows adding dates. We could possibly add the ability to parse discourse events from a category.

Example:
https://forum.wilap.de/t/potsdamer-tag-der-wissenschaften-11-5-2019/90 allows a download of an ICAL
Is this a use-case for http://machbar-potsdam.de?

Documentation of Discourse:


We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

Specify start of week

Would it be possible to add an option to specify which day of the week to use as the start?

For instance, maybe something like:

src="...&amp;skin=...&amp;startdow=sun" 

We're using Polar.sh so you can upvote and help fund this issue. We receive the funding once the issue is completed & confirmed by you. Thank you in advance for helping prioritize & fund our work. Fund with Polar

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.