+-- Application / Service specific information functions
+function app_description()
+ return I18N.translate("The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) server solution.") .. [[<br />]]
+ .. I18N.translate("Calendars and address books are available for both local and remote access, possibly limited through authentication policies.") .. [[<br />]]
+ .. I18N.translate("They can be viewed and edited by calendar and contact clients on mobile phones or computers.")
+end
+function app_title_main()
+ return [[<a href="javascript:alert(']]
+ .. I18N.translate("Version Information")
+ .. [[\n\n]] .. app_name
+ .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]] .. app_version
+ .. [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("required") .. [[:]]
+ .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]]
+ .. srv_ver_min .. [[ ]] .. I18N.translate("or higher")
+ .. [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("installed") .. [[:]]
+ .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]]
+ .. (service_version() or I18N.translate("NOT installed"))
+ .. [[\n\n]]
+ .. [[')">]]
+ .. I18N.translate(app_title)
+ .. [[</a>]]
+end
+function app_title_back()
+ return [[<a href="]]
+ .. DISP.build_url("admin", "services", "radicale")
+ .. [[">]]
+ .. I18N.translate(app_title)
+ .. [[</a>]]
+end
+function app_err_value()
+ if not service_version() then
+ return [[<h3><strong><br /><font color="red"> ]]
+ .. I18N.translate("Software package '%s' is not installed." % srv_name)
+ .. [[</font><br /><br /> ]]
+ .. I18N.translate("required") .. [[: ]] .. srv_name .. [[ ]] .. srv_ver_min
+ .. [[<br /><br /> ]]
+ .. [[<a href="]] .. DISP.build_url("admin", "system", "packages") ..[[">]]
+ .. I18N.translate("Please install current version !")
+ .. [[</a><br /> </strong></h3>]]
+ else
+ return [[<h3><strong><br /><font color="red"> ]]
+ .. I18N.translate("Software package '%s' is outdated." % srv_name)
+ .. [[</font><br /><br /> ]]
+ .. I18N.translate("installed") .. [[: ]] .. srv_name .. [[ ]] .. service_version()
+ .. [[<br /> ]]
+ .. I18N.translate("required") .. [[: ]] .. srv_name .. [[ ]] .. srv_ver_min
+ .. [[<br /><br /> ]]
+ .. [[<a href="]] .. DISP.build_url("admin", "system", "packages") ..[[">]]
+ .. I18N.translate("Please update to current version !")
+ .. [[</a><br /> </strong></h3>]]
+ end
+end
+
+function service_version()
+ local ver = nil
+ IPKG.list_installed(srv_name, function(n, v, d)
+ if v and (#v > 0) then ver = v end
+ end
+ )
+ if not ver or (#ver == 0) then
+ ver = UTIL.exec(srv_ver_cmd)
+ if #ver == 0 then ver = nil end
+ end
+ return ver
+end
+function service_ok()
+ return IPKG.compare_versions((service_version() or "0"), ">=", srv_ver_min)
+end
+