| rev | 
   line source | 
| 
poelzi@164
 | 
     1 slot.set_layout("xml", "text/xml")
 | 
| 
poelzi@164
 | 
     2 
 | 
| 
poelzi@164
 | 
     3 slot.put_into("default", '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">')
 | 
| 
poelzi@164
 | 
     4 
 | 
| 
poelzi@164
 | 
     5 function url(args)
 | 
| 
poelzi@164
 | 
     6   return ui.tag{
 | 
| 
poelzi@164
 | 
     7     tag = "url",
 | 
| 
poelzi@164
 | 
     8     content = function()
 | 
| 
poelzi@164
 | 
     9       ui.tag{tag = "loc",
 | 
| 
poelzi@164
 | 
    10              content = encode.url{
 | 
| 
poelzi@164
 | 
    11                 base = request.get_absolute_baseurl(),
 | 
| 
poelzi@164
 | 
    12                 module = args.module,
 | 
| 
poelzi@164
 | 
    13                 view = args.view,
 | 
| 
poelzi@164
 | 
    14                 id = args.id
 | 
| 
poelzi@164
 | 
    15               }
 | 
| 
poelzi@164
 | 
    16              }
 | 
| 
poelzi@164
 | 
    17       if args.lastmod then
 | 
| 
poelzi@164
 | 
    18         ui.tag{tag = "lastmod",
 | 
| 
poelzi@164
 | 
    19                content = args.lastmod
 | 
| 
poelzi@164
 | 
    20                }
 | 
| 
poelzi@164
 | 
    21       end
 | 
| 
poelzi@164
 | 
    22       ui.tag{tag = "changefreq",
 | 
| 
poelzi@164
 | 
    23              content = args.changefreq or "daily",
 | 
| 
poelzi@164
 | 
    24              }
 | 
| 
poelzi@164
 | 
    25       if args.priority then
 | 
| 
poelzi@164
 | 
    26         ui.tag{tag = "priority",
 | 
| 
poelzi@164
 | 
    27                content = tostring(args.priority)
 | 
| 
poelzi@164
 | 
    28                }
 | 
| 
poelzi@164
 | 
    29       end
 | 
| 
poelzi@164
 | 
    30 
 | 
| 
poelzi@164
 | 
    31     end
 | 
| 
poelzi@164
 | 
    32   }
 | 
| 
poelzi@164
 | 
    33 end
 | 
| 
poelzi@164
 | 
    34 
 | 
| 
poelzi@164
 | 
    35 function max(...)
 | 
| 
poelzi@164
 | 
    36   trace.debug_table(arg)
 | 
| 
poelzi@164
 | 
    37   nargs = {}
 | 
| 
poelzi@164
 | 
    38   for i = 1,1,arg.n do
 | 
| 
poelzi@164
 | 
    39     if type(arg[i]) == "number" then
 | 
| 
poelzi@164
 | 
    40       nargs[#nargs] = arg[i]
 | 
| 
poelzi@164
 | 
    41     end
 | 
| 
poelzi@164
 | 
    42   end
 | 
| 
poelzi@164
 | 
    43   if #nargs > 0 then
 | 
| 
poelzi@164
 | 
    44     return math.max(unpack(nargs))
 | 
| 
poelzi@164
 | 
    45   end
 | 
| 
poelzi@164
 | 
    46   return nil
 | 
| 
poelzi@164
 | 
    47 end
 | 
| 
poelzi@164
 | 
    48 
 | 
| 
poelzi@164
 | 
    49 
 | 
| 
poelzi@164
 | 
    50 areas = Area:new_selector():add_where("active='y'")
 | 
| 
poelzi@164
 | 
    51 
 | 
| 
poelzi@164
 | 
    52 for i,area in ipairs(areas:exec()) do
 | 
| 
poelzi@164
 | 
    53   url{ module = "area", view = "show", id = area.id, priority = 0.9 }
 | 
| 
poelzi@164
 | 
    54 end
 | 
| 
poelzi@164
 | 
    55 
 | 
| 
poelzi@164
 | 
    56 -- FIXME timezone should be added as ...HH24:MI:SS+TZ with NUMERIC like +09:00
 | 
| 
poelzi@164
 | 
    57 
 | 
| 
poelzi@164
 | 
    58 issues = Issue:new_selector()
 | 
| 
poelzi@164
 | 
    59 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
 | 
    60 
 | 
| 
poelzi@164
 | 
    61 for i,issue in ipairs(issues:exec()) do
 | 
| 
poelzi@164
 | 
    62   url{ module = "issue", view = "show", id = issue.id, priority = 0.8,
 | 
| 
poelzi@164
 | 
    63        lastmod = tostring(issue.lastmod)
 | 
| 
poelzi@164
 | 
    64        }
 | 
| 
poelzi@164
 | 
    65 end
 | 
| 
poelzi@164
 | 
    66 
 | 
| 
poelzi@164
 | 
    67 initiatives = Initiative:new_selector()
 | 
| 
poelzi@164
 | 
    68 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
 | 
    69 
 | 
| 
poelzi@164
 | 
    70 for i,initiative in ipairs(initiatives:exec()) do
 | 
| 
poelzi@164
 | 
    71   url{ module = "initiative", view = "show", id = initiative.id, priority = 0.5,
 | 
| 
poelzi@164
 | 
    72        lastmod = tostring(initiative.lastmod)
 | 
| 
poelzi@164
 | 
    73        }
 | 
| 
poelzi@164
 | 
    74 end
 | 
| 
poelzi@164
 | 
    75 
 | 
| 
poelzi@164
 | 
    76 --trace.render()
 | 
| 
poelzi@164
 | 
    77 
 | 
| 
poelzi@164
 | 
    78 slot.put_into("default", '</urlset>')
 | 
| 
poelzi@164
 | 
    79 
 | 
| 
poelzi@164
 | 
    80 return |