diff --git a/daemon.py b/daemon.py
index 40091882c..df9a05c83 100644
--- a/daemon.py
+++ b/daemon.py
@@ -1080,6 +1080,7 @@ class PubServer(BaseHTTPRequestHandler):
# self.send_header('ETag', '"' + etag + '"')
if last_modified:
self.send_header('last-modified', last_modified)
+ self.send_header('accept-ranges', 'bytes')
self.end_headers()
def _etag_exists(self, media_filename: str) -> bool:
@@ -5063,8 +5064,17 @@ class PubServer(BaseHTTPRequestHandler):
if '&submitYes=' in remove_post_confirm_params:
remove_post_confirm_params = \
urllib.parse.unquote_plus(remove_post_confirm_params)
- remove_message_id = \
- remove_post_confirm_params.split('messageId=')[1]
+ if 'messageId=' in remove_post_confirm_params:
+ remove_message_id = \
+ remove_post_confirm_params.split('messageId=')[1]
+ elif 'eventid=' in remove_post_confirm_params:
+ remove_message_id = \
+ remove_post_confirm_params.split('eventid=')[1]
+ else:
+ self.send_response(400)
+ self.end_headers()
+ self.server.postreq_busy = False
+ return
if '&' in remove_message_id:
remove_message_id = remove_message_id.split('&')[0]
print('remove_message_id: ' + remove_message_id)
diff --git a/epicyon-calendar.css b/epicyon-calendar.css
index e61643985..a2b4d407c 100644
--- a/epicyon-calendar.css
+++ b/epicyon-calendar.css
@@ -172,13 +172,34 @@ a:focus {
font-size: 28px;
position: relative;
padding: 20px;
+ direction: ltr;
}
+
+.calendar__day__event__rtl {
+ color: var(--event-color);
+ background-color: var(--event-background-private);
+ float: left;
+ font-size: 28px;
+ position: relative;
+ padding: 20px;
+ direction: rtl;
+}
+
.calendar__day__event__public {
color: var(--event-public-color);
float: left;
font-size: 28px;
position: relative;
padding: 20px;
+ direction: ltr;
+}
+.calendar__day__event__public__rtl {
+ color: var(--event-public-color);
+ float: left;
+ font-size: 28px;
+ position: relative;
+ padding: 20px;
+ direction: rtl;
}
.place {
color: var(--place-color);
diff --git a/happening.py b/happening.py
index 6c15f41c4..e9d460b67 100644
--- a/happening.py
+++ b/happening.py
@@ -273,6 +273,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str,
if not _is_happening_post(post_json_object):
continue
+ content_language = system_language
if post_json_object.get('object'):
content = None
if post_json_object['object'].get('contentMap'):
@@ -280,6 +281,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str,
if post_json_object['object']['contentMap'].get(sys_lang):
content = \
post_json_object['object']['contentMap'][sys_lang]
+ content_language = sys_lang
if not content:
if post_json_object['object'].get('content'):
content = post_json_object['object']['content']
@@ -314,6 +316,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str,
tag['sender'] = post_id.split('#statuses#')[0]
tag['sender'] = tag['sender'].replace('#', '/')
tag['public'] = public_event
+ tag['language'] = content_language
post_event.append(tag)
else:
# tag is a place
@@ -759,17 +762,26 @@ def remove_calendar_event(base_dir: str, nickname: str, domain: str,
if '/' in message_id:
message_id = message_id.replace('/', '#')
if not text_in_file(message_id, calendar_filename):
+ message_id = message_id.replace('#', '/')
+ if not text_in_file(message_id, calendar_filename):
+ return
+ lines_str = ''
+ try:
+ with open(calendar_filename, 'r', encoding='utf-8') as fp_cal:
+ lines_str = fp_cal.read()
+ except OSError:
+ print('EX: unable to read calendar file ' +
+ calendar_filename)
+ if not lines_str:
return
- lines = None
- with open(calendar_filename, 'r', encoding='utf-8') as fp_cal:
- lines = fp_cal.readlines()
- if not lines:
- return
+ lines = lines_str.split('\n')
+ print('Removing calendar event: ' + message_id)
try:
with open(calendar_filename, 'w+', encoding='utf-8') as fp_cal:
for line in lines:
- if message_id not in line:
- fp_cal.write(line)
+ if message_id in line:
+ continue
+ fp_cal.write(line + '\n')
except OSError:
print('EX: unable to remove calendar event ' +
calendar_filename)
diff --git a/webapp_calendar.py b/webapp_calendar.py
index fc8ed42c8..eebf7bc22 100644
--- a/webapp_calendar.py
+++ b/webapp_calendar.py
@@ -26,6 +26,7 @@ from happening import get_todays_events
from happening import get_calendar_events
from happening import get_todays_events_icalendar
from happening import get_month_events_icalendar
+from webapp_utils import language_right_to_left
from webapp_utils import get_banner_file
from webapp_utils import set_custom_background
from webapp_utils import html_header_with_external_style
@@ -84,6 +85,9 @@ def html_calendar_delete_confirm(translate: {}, base_dir: str,
str(month_number) + '">\n'
delete_post_str += ' \n'
+ if post_time:
+ delete_post_str += ' \n'
delete_post_str += \
' \n'
delete_post_str += \
@@ -108,7 +112,8 @@ def _html_calendar_day(person_cache: {}, translate: {},
year: int, month_number: int, day_number: int,
nickname: str, domain: str, day_events: [],
month_name: str, actor: str,
- theme: str, access_keys: {}) -> str:
+ theme: str, access_keys: {},
+ system_language: str) -> str:
"""Show a day within the calendar
"""
account_dir = acct_dir(base_dir, nickname, domain)
@@ -170,6 +175,7 @@ def _html_calendar_day(person_cache: {}, translate: {},
start_time_str = ''
end_time_str = ''
event_description = None
+ event_language = system_language
event_place = None
post_id = None
sender_name = ''
@@ -177,6 +183,10 @@ def _html_calendar_day(person_cache: {}, translate: {},
event_is_public = False
# get the time place and description
for evnt in event_post:
+ event_language = system_language
+ if evnt.get('language'):
+ event_language = evnt['language']
+
if evnt['type'] == 'Event':
if evnt.get('post_id'):
post_id = evnt['post_id']
@@ -250,10 +260,16 @@ def _html_calendar_day(person_cache: {}, translate: {},
translate['Delete this event'] + '" src="/' + \
'icons/delete.png" />\n'
+ is_rtl = language_right_to_left(event_language)
+
event_class = 'calendar__day__event'
+ if is_rtl:
+ event_class = 'calendar__day__event__rtl'
cal_item_class = 'calItem'
if event_is_public:
event_class = 'calendar__day__event__public'
+ if is_rtl:
+ event_class = 'calendar__day__event__public__rtl'
cal_item_class = 'calItemPublic'
if event_time:
if event_end_time:
@@ -401,7 +417,8 @@ def html_calendar(person_cache: {}, translate: {},
year, month_number, day_number,
nickname, domain, day_events,
month_name, actor,
- theme, access_keys)
+ theme, access_keys,
+ system_language)
if icalendar:
return get_month_events_icalendar(base_dir, nickname, domain,