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,