xquery version "1.0";
declare namespace session="http://exist-db.org/xquery/session";
declare namespace util="http://exist-db.org/xquery/util";
declare namespace i18n="http://apache.org/cocoon/i18n/2.1";
import module namespace classmenu="http://www.risten.no/shared/classmenu" at "../xquery/classmenu.xqm";
import module namespace langmenu="http://www.risten.no/shared/langmenu" at "../xquery/langmenu.xqm";
import module namespace ristenutil="http://www.risten.no/shared/util" at "../xquery/ristenutil.xqm";
(: Function to delete the language/dictionary entry, considering the number
: of senses, and in the future synonyms and other related words. :)
declare function local:delete-lang-entry( $lang as xs:string,
$langid as xs:string,
$centerid as xs:string )
{
let $doc := ristenutil:get-doc($lang),
$entry := document($doc)//entry[@id = $langid],
$numofsenses := count($entry//sense)
let $user := session:get-attribute("user"),
$date := ristenutil:dateTime(),
$whattext := concat("Deleted the sense ", $centerid)
return
if ( $numofsenses > 1 ) then (
(: delete only the relevant sense :)
update delete $entry//sense[@idref = $centerid],
update insert
into $entry/changes )
else
(: delete the whole entry :)
update delete $entry
};
(: Function to delete the term record entry, considering the number
: of languages. :)
declare function local:delete-term-record( $lang as xs:string,
$langid as xs:string,
$centerid as xs:string)
{
let $doc := ristenutil:get-doc('center'),
$entry := document($doc)//entry[@id = $centerid],
$numoflangs := count($entry/entryref)
let $user := session:get-attribute("user"),
$date := ristenutil:dateTime(),
$whattext := concat("Removed the term ref for language ", $lang)
return
if ( $numoflangs > 1 ) then (
(: delete only the relevant sense :)
update delete $entry/entryref[@xml:lang = $lang],
update insert
into $entry/changes )
else
(: delete the whole entry :)
update delete $entry
};
(: Main function - gathers the data required to build and pre-polutate
: the form, :)
declare function local:main() as element()+
{ (: previous selections are stored in session attributes, and used
for preselecting the same values as in the previous edit :)
let $centerid := request:get-parameter("centerid", "" ),
$langid := request:get-parameter("langid", "" ),
$lang := request:get-parameter("lang", ""),
$date := current-dateTime()
return (
{ local:delete-lang-entry( $lang, $langid, $centerid) }
{ local:delete-term-record($lang, $langid, $centerid) }
Entry deleted!
CenterID: {$centerid}
LangID: {$langid}
Lang: {$lang} )
};
{ let $start := util:system-time() return
(
local:main(),