%D \module
%D [ file=java-exa,
%D version=2002.??.??,
%D title=\CONTEXT\ JavaScript Macros,
%D subtitle=Example Support,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
% XFDF versus HTML
% localhost versus remote versus set
% filename | filename-nr => name
% fakename | fakename-nr => file upload, unless localhost
%
% we erase the list because otherwise we end up in browser remembering
% problems; also, it is not possible to set upload fields 'manually'
\startJSpreamble request_1 used now
var example_method = "HTML" ;
var example_host = "" ;
var example_port = "" ;
var example_url = "" ;
var example_file = "" ;
var example_log = true ; % false
function stripped_exa_value( name ) {
f = this.getField(name) ;
if (f) {
str = f.value ;
if (str.indexOf(name+'-')==0) {
str = str.substr(name.length+1) ;
}
return str ;
} else {
return "" ;
}
}
function identify_example_url ( ) {
if (example_log) {
console.clear ;
console.println("base url: "+this.baseURL) ;
console.println("this url: "+this.URL) ;
}
if (this.baseURL != "") {
example_url = this.baseURL ;
} else {
if (this.URL != "") {
example_url = this.URL
}
}
if (example_url.indexOf("file://")>=0) {
example_url = "" ;
}
str = stripped_exa_value("examplehost") ;
if (str != "auto") {
example_host = str ;
if (str == "localhost") {
example_port = "8061"
}
}
str = stripped_exa_value("exampleport") ;
if (str != "auto") {
example_port = str ;
}
if (example_log) {
console.println("example_url: "+example_url) ;
console.println("example_host: "+example_host) ;
console.println("example_port: "+example_port) ;
}
}
function check_example_url ( url ) {
if (url.indexOf("file://")>=0) {
url = "http://localhost:8061" ;
console.println("file url replaced by: "+url) ;
} else {
if (url.indexOf("://")<0) {
url = "http://" + url ;
}
if (example_log) {
console.println("url before check: "+url) ;
}
% url = url.replace(/(http:\\\/\\\/.+)(\\\/.*$)/, "$1") ;
url = url.replace(/(https*:\\\/\\\/.+?)(\\\/.*$)/, "$1/exarequest") ;
if (example_log) {
console.println("url after check: "+url) ;
}
}
return url ;
}
function set_example_xfdf ( method ) {
example_method = method ;
}
function set_example_file ( file ) {
example_method = file ;
}
function set_example_host ( host ) {
example_host = host ;
}
function set_example_port ( port ) {
example_host = host ;
}
function do_erase_example_file(tag) {
f = this.getField(tag) ;
if (f) {
f.value = "" ;
}
}
function do_erase_example_list(tag) {
for (i=1;i<=100;i++) {
f = this.getField(tag+"-"+i) ;
if (f) {
f.value = "" ;
} else {
return
}
}
}
function do_submit_example_url ( url ) {
if ((example_method == "XFDF" ) || (url.indexOf("localhost")>=0)) {
do_erase_example_file("fakename") ;
do_erase_example_list("fakename") ;
}
url = check_example_url(url) ;
if (example_log) {
console.println("submitting form to "+url+" using method "+example_method) ;
}
if (example_file != "") {
url = url + "/" + example_file ;
}
% we need the bFDF for acrobat 5
this.submitForm({cURL : url, bFDF : false, cSubmitAs : example_method}) ;
}
function submit_example_form ( ) {
identify_example_url() ;
if (example_host != "") {
if (example_port != "") {
do_submit_example_url(example_host+":"+example_port) ;
} else {
do_submit_example_url(example_host) ;
}
} else {
if (example_url != "") {
do_submit_example_url(example_url) ;
} else {
if (example_port != "") {
do_submit_example_url("localhost"+":"+example_port) ;
} else {
do_submit_example_url("localhost:8061") ; % local exampler
}
}
}
resetfilename () ;
}
function submit_form ( host, port) {
set_example_host(host) ;
set_example_post(post) ;
submit_example_form ;
}
\stopJSpreamble
\startJSpreamble request_2 used now
var exa_command = "" ;
var exa_option = "" ;
var exa_filename = "" ;
var exa_filelist = "" ;
var exa_registered = "" ;
function set_request (command,option) {
exa_command = command ;
if (exa_command == "") {
exa_option = option ;
} else { if (option == "") {
exa_option = "" ;
} else { if (option.indexOf("--")<0) {
exa_option = "--action=" + option ;
} else {
exa_option = option ;
} } }
}
function assemble_request ( ) {
v = this.getField('filename') ;
if (v) {
exa_filename = v.value ;
}
v = this.getField('filelist') ;
if (v) {
exa_filelist = v.value ;
}
% exa_filename = exa_filename.replace(/\\\\/g,'/') ;
% exa_filelist = exa_filelist.replace(/\\\\/g,'/') ;
str = "\\n" ;
str = str+"" ;
if (exa_filelist == "") {
exa_filelist = exa_registered ;
} else { if (exa_registered != "") {
exa_filelist = exa_filelist + "\\n" + exa_registered ;
} }
if (exa_command != "") {
str = str+""+exa_command+"" ;
}
if (exa_option != "") {
str = str+""+exa_option+"" ;
}
if (exa_filename != "") {
str = str+""+exa_filename+"" ;
}
var fls = "" ;
if (exa_filelist != "") {
% old method, soon obsolete
lst = exa_filelist.split(/\\s/) ;
for (i=0;i"+lst[i]+"" ;
}
} else { if (exa_multiple) {
for (i=1;i<=100;i++) {
% console.println("file field "+i) ;
f = this.getField("filename-"+ i) ;
% if (f) { if (f.value != "") {
% if (g) { if (g.value == "") {
% fls = fls+""+f.value+"" ;
% } else {
% fls = fls+""+f.value+"" ;
% } } else {
% fls = fls+""+f.value+"" ;
% }
% } }
if (f) { if (f.value != "") {
fls = fls + "" ;
} else {
% console.println("b") ;
fls = fls + " label='" + g.value + "'>" ;
} } else {
% console.println("c") ;
fls = fls + ">" ;
}
fls = fls + f.value + "" ;
} }
}
} }
if (fls != "") {
str = str + "" + fls + "" ;
}
str = str + "" ;
v = this.getField('exa:request') ;
if (v) {
v.value = str ;
}
}
\stopJSpreamble
\startJSpreamble request_3 used now
var exa_multiple = false ;
function setfilename ( suffixes ) {
if (event.targetName) {
var name = event.targetName ;
var fake = name.replace(/filename/,"fakename") ;
} else {
var name = 'filename' ;
var fake = 'fakename' ;
}
f = this.getField(fake) ;
if (f) {
f.browseForFileToSubmit() ;
if ((suffixes != "") && (f.value != "")) {
%
s = suffixes.replace(/,/g,"|") ;
r = new RegExp() ;
s = "\\\\.(" + s + ")$" ;
r.compile(s, "i") ;
if (f.value.search(r)<=0) {
f.value = "" ;
app.alert('This filetype is not permitted.') ;
%
% lst = suffixes.split(/,/) ;
% ok = false ;
% for (i=0;i=0) {
% f.value = "" ;
% }
% }
}
this.dirty = false ;
}
function addfilename () {
if (exa_multiple) {
h = this.getField("filelist") ;
g = this.getField("filename") ;
if ((g) && (h)) {
str = g.value ;
if (h.value == "") {
h.value = str ;
} else {
h.value = h.value + "\\n" + str ;
}
g.value = "" ;
this.value = "" ;
}
}
this.dirty = false ;
}
% this only works with client that assembles request
function registerfilename (str) {
if (str!="") {
h = this.getField("filelist") ;
if (h) {
if (h.value != "") {
h.value = h.value + "\\n" ;
}
h.value = h.value + str ;
} else {
if (exa_registered != "") {
exa_registered = exa_registered + "\\n" ;
}
exa_registered = exa_registered + str ;
}
}
console.show ;
console.println('registered files') ;
console.println("file: "+str) ;
console.println("list: "+exa_registered) ;
this.dirty = false ;
}
function checkfilename () {
}
function getfilename ( suffixes ) {
setfilename(suffixes) ;
checkfilename() ;
addfilename() ;
}
function resetfilename () {
do_erase_example_file("fakename") ;
do_erase_example_file("filename") ;
do_erase_example_file("filelist") ;
do_erase_example_list("filename") ;
do_erase_example_list("fakename") ;
}
\stopJSpreamble
\endinput