Mercurial > hg > mpdl-group
diff software/eXist/webapp/mpdl/doc/doc-operation.xql @ 7:5589d865af7a
Erstellung XQL/XSL Applikation
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 08 Feb 2011 15:16:46 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/software/eXist/webapp/mpdl/doc/doc-operation.xql Tue Feb 08 15:16:46 2011 +0100 @@ -0,0 +1,319 @@ +xquery version "1.0"; + +declare namespace request="http://exist-db.org/xquery/request"; +declare namespace util = "http://exist-db.org/xquery/util"; + +declare namespace escidocItem="http://www.escidoc.de/schemas/item/0.9"; +declare namespace container="http://www.escidoc.de/schemas/container/0.8"; +declare namespace escidocMetadataRecords="http://www.escidoc.de/schemas/metadatarecords/0.5"; +declare namespace dc="http://purl.org/dc/elements/1.1/"; +declare namespace xlink="http://www.w3.org/1999/xlink"; +declare namespace mpiwg="http://www.mpiwg-berlin.mpg.de/ns/mpiwg"; + +let $docBaseReq := request:get-parameter("docBase", "") +let $docBase := + if ($docBaseReq = '') + then 'echo' + else $docBaseReq +let $languageReq := request:get-parameter("language", "") +let $language := + if ($languageReq = '') + then 'la' + else string($languageReq) + +let $docPathStandard := "/db/mpdl/documents/standard" +let $docPath := concat($docPathStandard, "/", $docBase, "/", $language) +let $docCollectionStr := concat("collection('", $docPath, "')") +let $docCollection := util:eval($docCollectionStr) +let $docFileNames := + for $elem at $pos in $docCollection + let $doc := $elem/fn:root() let $documentUriOrig := document-uri($doc) + let $documentFileName := substring-after(substring-after($documentUriOrig, $docPath), "/") + return $documentFileName + +let $javascriptHtml := + <script type="text/javascript"> + <!-- + function DocumentSelection() { + var existIdentifier = document.docBaseList.doc[document.docBaseList.doc.selectedIndex].value; + var eSciDocCookieId = document.docBaseList.eSciDocCookieId.value; + var existLink = "http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/page-query-result.xql?document=".concat(existIdentifier); + var existIdentifierSplit = existIdentifier.split("/"); + var docBase = existIdentifierSplit[1]; + var language = existIdentifierSplit[2]; + var fileName = existIdentifierSplit[3]; + document.formDocOperation.docBase.value = docBase; + document.formDocOperation.language.value = language; + document.formDocOperation.fileName.value = fileName; + document.getElementById("existLink").href = existLink; + document.getElementById("existLink").firstChild.nodeValue = existIdentifier; + UpdateESciDocLink(existIdentifier, eSciDocCookieId); + document.formDocOperation.srcLocalFileName.value = ""; + document.formDocOperation.srcUrl.value = ""; + } + function OperationSelection() { + if (document.formDocOperation.operation.selectedIndex == 1) { + document.formDocOperation.srcLocalFileName.value = ""; + document.formDocOperation.srcUrl.value = ""; + } + } + function LocalFileNameSelection() { + var srcLocalFileName = document.formDocOperation.srcLocalFileName.value; + document.formDocOperation.fileName.value = srcLocalFileName; + document.formDocOperation.srcUrl.value = ""; + document.getElementById("existLink").href = ""; + document.getElementById("existLink").firstChild.nodeValue = ""; + document.getElementById("eSciDocLink").href = ""; + document.getElementById("eSciDocLink").firstChild.nodeValue = ""; + } + function UrlSelection() { + var srcUrl = document.formDocOperation.srcUrl.value; + var startPos = srcUrl.lastIndexOf("/"); + var endPos = srcUrl.length; + var fileName = srcUrl.substring(startPos + 1, endPos); + document.formDocOperation.fileName.value = fileName; + document.formDocOperation.srcLocalFileName.value = ""; + document.getElementById("existLink").href = ""; + document.getElementById("existLink").firstChild.nodeValue = ""; + document.getElementById("eSciDocLink").href = ""; + document.getElementById("eSciDocLink").firstChild.nodeValue = ""; + } + function ResetSrcLocalFileName() { + document.formDocOperation.srcLocalFileName.value = ""; + document.formDocOperation.srcUrl.value = ""; + document.formDocOperation.fileName.value = ""; + } + function DocBaseRefreshDest() { + var docBase = document.formDocOperation.docBase[document.formDocOperation.docBase.selectedIndex].value; + DocBaseRefresh(docBase); + } + function DocBaseRefreshList() { + var docBase = document.docBaseList.docBase[document.docBaseList.docBase.selectedIndex].value; + DocBaseRefresh(docBase); + } + function DocBaseRefresh(docBase) { + document.docBaseList.docBase.value = docBase; + for (i = 0; i < document.docBaseList.doc.length; i++) + document.docBaseList.doc[i].selected = false; + document.docBaseList.submit(); + } + function LanguageRefreshDest() { + var lang = document.formDocOperation.language[document.formDocOperation.language.selectedIndex].value; + LanguageRefresh(lang); + } + function LanguageRefreshList() { + var lang = document.docBaseList.language[document.docBaseList.language.selectedIndex].value; + LanguageRefresh(lang); + } + function LanguageRefresh(language) { + document.docBaseList.language.value = language; + for (i = 0; i < document.docBaseList.doc.length; i++) + document.docBaseList.doc[i].selected = false; + document.docBaseList.submit(); + } + function UpdateESciDocLinkTemp() { + if (http.readyState == 4) { + var eSciDocContainerId = http.responseText.trim(); + if (eSciDocContainerId != "") { + var eSciDocLink = "http://euler.mpiwg-berlin.mpg.de:8080".concat(eSciDocContainerId); + document.getElementById("eSciDocLink").href = eSciDocLink; + document.getElementById("eSciDocLink").firstChild.nodeValue = eSciDocContainerId; + } else { + document.getElementById("eSciDocLink").href = ""; + document.getElementById("eSciDocLink").firstChild.nodeValue = ""; + } + isWorking = false; + } + } + function UpdateESciDocLink(existId, eSciDocCookieId) { + if (!isWorking && http) { + http.open("GET", "get-escidoc-containerid.xql?existId=" + existId + "&eSciDocCookieId=" + eSciDocCookieId); + http.onreadystatechange = UpdateESciDocLinkTemp; + // this sets the call-back function to be invoked when a response from the HTTP request is returned + isWorking = true; + http.send(null); + } + } + function GetHTTPObject() { + var xmlhttp; + /*@cc_on + @if (@_jscript_version >= 5) + try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (E) { + xmlhttp = false; + } + } + @else + xmlhttp = false; + @end @*/ + if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { + try { + xmlhttp = new XMLHttpRequest(); + xmlhttp.overrideMimeType("text/xml"); + } catch (e) { + xmlhttp = false; + } + } + return xmlhttp; + } + var http = GetHTTPObject(); // create the HTTP Object + var isWorking = false; + --> + </script> + +let $eSciDocCookieId := session:get-attribute("eSciDocCookieId") + +let $docBaseOptions := + <select> + <option value ="archimedes">Archimedes</option> + <option value ="echo">Echo</option> + </select> +let $docBaseOptionsSelected := + for $option in $docBaseOptions/option + return element { node-name($option)} + { if ($option/@value = $docBase) + then attribute {'selected'} + {'true'} + else (), + $option/@*, + $option/node() } +let $docBaseSelectBoxDest := + <select name="docBase" onchange="DocBaseRefreshDest()">{$docBaseOptionsSelected}</select> +let $docBaseSelectBoxList := + <select name="docBase" onchange="DocBaseRefreshList()">{$docBaseOptionsSelected}</select> + +let $languageOptions := + <select> + <option value = "ar">Arabic</option> + <option value = "zh">Chinese</option> + <option value = "nl">Dutch</option> + <option value = "en">English</option> + <option value = "fr">French</option> + <option value = "de">German</option> + <option value = "el">Greek</option> + <option value = "it">Italian</option> + <option value = "la">Latin</option> + </select> +let $languageOptionsSelected := + for $option in $languageOptions/option + return element { node-name($option)} + { if ($option/@value = $language) + then attribute {'selected'} + {'true'} + else (), + $option/@*, + $option/node() } +let $languageSelectBoxDest := + <select name="language" onchange="LanguageRefreshDest()">{$languageOptionsSelected}</select> +let $languageSelectBoxList := + <select name="language" onchange="LanguageRefreshList()">{$languageOptionsSelected}</select> + +let $docsSelectBoxOptions := + for $docFileName at $pos in $docFileNames + let $existIdentifier := concat("/", $docBase, "/", $language, "/", $docFileName) + let $option := <option value ="{$existIdentifier}">{$docFileName}</option> + order by $docFileName + return $option +let $docsSelectBox := + <select name="doc" style="width: 100%;" size="20" onclick="DocumentSelection()"> + {$docsSelectBoxOptions} + </select> + +let $error := + if ($eSciDocCookieId = '' or empty($eSciDocCookieId)) + then <bla>No login context available. Please <a href="login.xql">login</a> before you do an operation</bla> + else "no" + +let $resultHtml := + if ($error = 'no') + then + <div> + <table align="middle" width="100%"> + <colgroup> + <col width="50%"/> + <col width="50%"/> + </colgroup> + <tr> + <td valign="top"> + <form name="formDocOperation" action="{session:encode-url(xs:anyURI('doc-operation-result.xql'))}" method="post" enctype="multipart/form-data"> + <table> + <tr><td><b>Operation</b></td></tr> + <tr> + <td> + <select name="operation" onchange="OperationSelection()"> + <option value ="create" selected="true">Create</option> + <option value ="update">Update</option> + <option value ="delete">Delete</option> + </select> + <input type="submit" name="performOperation" value="Execute"/> + <a href="../info.xql?info=docInterfaceOperation" onclick="window.open("../info.xql?info=docInterfaceOperation", "InfoWindow", "menubar=no,width=500,height=500,toolbar=no");return false"><img src="../images/info.png" valign="bottom" width="18" height="18" border="0" alt="Info document interface operation"/></a> + </td> + </tr> + <tr><td><br/></td></tr> + <tr><td><b>Source <a href="../info.xql?info=docInterfaceSource" onclick="window.open("../info.xql?info=docInterfaceSource", "InfoWindow", "menubar=no,width=500,height=500,toolbar=no");return false"><img src="../images/info.png" valign="bottom" width="18" height="18" border="0" alt="Info document interface source"/></a></b></td></tr> + <tr><td>Local file: <input type="file" size="40" name="srcLocalFileName" onchange="LocalFileNameSelection()" maxlength="10000000" accept="text/xml" value="srcLocalFileName"/> + <input type="button" name="resetSrcLocalFileName" value="Reset" onclick="ResetSrcLocalFileName()"/></td></tr> + <tr><td><text style="margin-left:10px;"></text>or</td></tr> + <tr><td>Url: <input type="text" size="40" name="srcUrl" onchange="UrlSelection()" value=""/></td></tr> + <tr><td><br/></td></tr> + <tr><td><b>Destination</b></td></tr> + <tr> + <td>Document base: + {$docBaseSelectBoxDest} + </td> + </tr> + <tr> + <td>Language: + {$languageSelectBoxDest} + </td> + </tr> + <tr><td>Document name: <input type="text" size="40" name="fileName" value=""/> <a href="../info.xql?info=docInterfaceDestDocName" onclick="window.open("../info.xql?info=docInterfaceDestDocName", "InfoWindow", "menubar=no,width=500,height=500,toolbar=no");return false"><img src="../images/info.png" valign="bottom" width="18" height="18" border="0" alt="Info document interface source"/></a></td></tr> + <tr><td>eXist document link: <a id="existLink" href=""></a></td></tr> + <tr><td>eSciDoc document link: <a id="eSciDocLink" href=""></a></td></tr> + </table> + </form> + </td> + <td valign="top"> + <form name="docBaseList" action="doc-operation.xql" method="get"> + <input type="hidden" name="eSciDocCookieId" value="{$eSciDocCookieId}"/> + <table> + <tr> + <td> + <b>Documents</b><br/> + <br/> + Document base: + {$docBaseSelectBoxList} + Language: + {$languageSelectBoxList} + </td> + </tr> + <tr><td>{$docsSelectBox}</td></tr> + </table> + </form> + </td> + </tr> + </table> + </div> + else + <div><b>Error in operation:</b> {$error}</div> + + + +let $title := "MPDL: eXist/eSciDoc document interface" +return +<html> +<head> +<title>{$title}</title> +{$javascriptHtml} +</head> +<body> + <h1>{$title}</h1> + {$resultHtml} + <hr/> + See the <a href="doc-operation.xql?_source=yes">XQuery source</a> of this page, if you find a bug <a href="https://itgroup.mpiwg-berlin.mpg.de:8080/tracs/mpdl-project-software/newticket">let us know</a> +</body> +</html> \ No newline at end of file