poelzi@164: slot.set_layout("xml", "text/xml") poelzi@164: poelzi@164: slot.put_into("default", '') poelzi@164: poelzi@164: function url(args) poelzi@164: return ui.tag{ poelzi@164: tag = "url", poelzi@164: content = function() poelzi@164: ui.tag{tag = "loc", poelzi@164: content = encode.url{ poelzi@164: base = request.get_absolute_baseurl(), poelzi@164: module = args.module, poelzi@164: view = args.view, poelzi@164: id = args.id poelzi@164: } poelzi@164: } poelzi@164: if args.lastmod then poelzi@164: ui.tag{tag = "lastmod", poelzi@164: content = args.lastmod poelzi@164: } poelzi@164: end poelzi@164: ui.tag{tag = "changefreq", poelzi@164: content = args.changefreq or "daily", poelzi@164: } poelzi@164: if args.priority then poelzi@164: ui.tag{tag = "priority", poelzi@164: content = tostring(args.priority) poelzi@164: } poelzi@164: end poelzi@164: poelzi@164: end poelzi@164: } poelzi@164: end poelzi@164: poelzi@164: function max(...) poelzi@164: trace.debug_table(arg) poelzi@164: nargs = {} poelzi@164: for i = 1,1,arg.n do poelzi@164: if type(arg[i]) == "number" then poelzi@164: nargs[#nargs] = arg[i] poelzi@164: end poelzi@164: end poelzi@164: if #nargs > 0 then poelzi@164: return math.max(unpack(nargs)) poelzi@164: end poelzi@164: return nil poelzi@164: end poelzi@164: poelzi@164: poelzi@164: areas = Area:new_selector():add_where("active='y'") poelzi@164: poelzi@164: for i,area in ipairs(areas:exec()) do poelzi@164: url{ module = "area", view = "show", id = area.id, priority = 0.9 } poelzi@164: end poelzi@164: poelzi@164: -- FIXME timezone should be added as ...HH24:MI:SS+TZ with NUMERIC like +09:00 poelzi@164: poelzi@164: issues = Issue:new_selector() poelzi@164: issues:add_field("to_char(GREATEST(issue.created, issue.accepted, issue.half_frozen, issue.fully_frozen, issue.closed, issue.cleaned), 'YYYY-MM-DD\"T\"HH24:MI:SS')", "lastmod") poelzi@164: poelzi@164: for i,issue in ipairs(issues:exec()) do poelzi@164: url{ module = "issue", view = "show", id = issue.id, priority = 0.8, poelzi@164: lastmod = tostring(issue.lastmod) poelzi@164: } poelzi@164: end poelzi@164: poelzi@164: initiatives = Initiative:new_selector() poelzi@164: initiatives:add_field("to_char(GREATEST(initiative.created, initiative.revoked, (select draft.created from draft where draft.initiative_id = initiative.id ORDER BY draft.created DESC LIMIT 1)), 'YYYY-MM-DD\"T\"HH24:MI:SS')", "lastmod") poelzi@164: poelzi@164: for i,initiative in ipairs(initiatives:exec()) do poelzi@164: url{ module = "initiative", view = "show", id = initiative.id, priority = 0.5, poelzi@164: lastmod = tostring(initiative.lastmod) poelzi@164: } poelzi@164: end poelzi@164: poelzi@164: --trace.render() poelzi@164: poelzi@164: slot.put_into("default", '') poelzi@164: poelzi@164: return