ഘടകം:Add to Calendar
ഈ ഘടകത്തിന്റെ വിവരണം ഘടകം:Add to Calendar/വിവരണം എന്ന താളിൽ നിർമ്മിക്കാവുന്നതാണ്
local function google_calendar_link(args, date_txt)
return '[https://calendar.google.com/calendar/render?action=TEMPLATE' ..
'&text=' .. mw.uri.encode(args.text or '') ..
'&dates=' .. date_txt ..
'&details=' .. mw.uri.encode(args.details or '') ..
'&location=' .. mw.uri.encode(args.location or '') ..
' Google]'
end
local function outlook_calendar_link(args, date_t, end_date_t)
return '[https://outlook.live.com/calendar/0/deeplink/compose?path=/calendar/action/compose' ..
'&rru=addevent' ..
'&subject=' .. mw.uri.encode(args.text or '') ..
'&startdt=' .. os.date('!%Y-%m-%dT%H:%M:%SZ', os.time(date_t)) ..
'&enddt=' .. os.date('!%Y-%m-%dT%H:%M:%SZ', os.time(end_date_t)) ..
'&body=' .. mw.uri.encode(args.details or '') ..
'&location=' .. mw.uri.encode(args.location or '') ..
' Outlook]'
end
local function yahoo_calendar_link(args, date_t, end_date_t)
return '[https://calendar.yahoo.com/?v=60' ..
'&TITLE=' .. mw.uri.encode(args.text or '') ..
'&ST=' .. os.date('!%Y%m%dT%H%M%SZ', os.time(date_t)) ..
'&ET=' .. os.date('!%Y%m%dT%H%M%SZ', os.time(end_date_t)) ..
'&DESC=' .. mw.uri.encode(args.details or '') ..
'&in_loc=' .. mw.uri.encode(args.location or '') ..
' Yahoo]'
end
local function ics_file_link(args, date_t, end_date_t)
local ics = table.concat({
'BEGIN:VCALENDAR',
'VERSION:2.0',
'BEGIN:VEVENT',
'SUMMARY:' .. args.text or '',
'DTSTART:' .. os.date('!%Y%m%dT%H%M%SZ', os.time(date_t)),
'DTEND:' .. os.date('!%Y%m%dT%H%M%SZ', os.time(end_date_t)),
'DESCRIPTION:' .. args.details or '',
'LOCATION:' .. args.location or '',
'END:VEVENT',
'END:VCALENDAR'
}, '\r\n')
local encoded_ics = mw.uri.encode(ics)
return '[data:text/calendar;charset=utf8,' .. encoded_ics .. ' iCal]'
end
local function main(frame)
local getArgs = require('Module:Arguments with aliases').getArgs
local arg_aliases = { text={'text','title'}, date={'date','start'}, end_date={'end_date','end'}, details={'details','description'}, location={'location','venue'}, timezone={'timezone','tz'} }
local args = getArgs(frame, { aliases = arg_aliases })
local date_t = get_date(args.date)
local end_date_t = get_date(args.end_date) or date_t
local tz_offset = (args.timezone and get_utc_offset(args.timezone)) or 0
local date_u = os.time(date_t) + tz_offset
local end_date_u = os.time(end_date_t) + tz_offset
local date_txt = os.date('%Y%m%dT%H%M%SZ', date_u) .. '/' .. os.date('%Y%m%dT%H%M%SZ', end_date_u)
return '<span class="add-to-calendar">' ..
google_calendar_link(args, date_txt) .. ' | ' ..
outlook_calendar_link(args, date_t, end_date_t) .. ' | ' ..
yahoo_calendar_link(args, date_t, end_date_t) .. ' | ' ..
ics_file_link(args, date_t, end_date_t) ..
'</span>'
end
return { main = main }