annotate xul/annota/annota.js @ 125:bf6d9b7a77d4

Annotation Tool to integrate in chrome sidebar
author engler
date Wed, 25 Jun 2003 15:39:38 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
125
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
1 include ('chrome://jslib/content/io/dir.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
2 include ('chrome://jslib/content/io/file.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
3 include ('chrome://jslib/content/io/rdfBase.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
4 include ('chrome://jslib/content/io/rdfResource.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
5 include ('chrome://jslib/content/io/rdfContainer.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
6 include ('chrome://jslib/content/io/rdf.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
7 include ('chrome://jslib/content/io/rdfFile.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
8 include('chrome://jslib/content/io/fileUtils.js');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
9
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
10 var slash='/';
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
11 if (navigator.platform=="Win32"){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
12 slash='\\';
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
13 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
14
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
15 var directory=slash;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
16 var digilib_path=slash;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
17
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
18 getProfile();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
19
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
20 function makePathCompatible(path){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
21 if (navigator.platform=="Win32"){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
22 // slash durch backslash ersetzten
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
23 path=path.replace(/\//g,"\\");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
24 // nur 2 backslashs am anfang
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
25 path=path.replace(/^\\{3}/,"\\\\");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
26 // vor Laufwerkbuchstaben kein Backslash
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
27 if (path.indexOf(":")>0){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
28 path=path.replace(/^\\/g,"");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
29 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
30 // nur ein Slash gibt Absturz
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
31 path=path.replace(/^\\$/,"c:\\");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
32 //alert(path);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
33 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
34 return path;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
35 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
36
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
37 function file_open(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
38 var nsIFilePicker = Components.interfaces.nsIFilePicker;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
39 var fp = Components.classes["@mozilla.org/filepicker;1"]
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
40 .createInstance(nsIFilePicker);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
41 fp.init(window, "Select a Directory", nsIFilePicker.modeGetFolder);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
42
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
43 // set default direcotry
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
44 var aLocalFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
45 directory=makePathCompatible(directory);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
46 aLocalFile.initWithPath(directory);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
47 fp.displayDirectory=aLocalFile;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
48
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
49 var res=fp.show();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
50 if (res==nsIFilePicker.returnOK){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
51 directory=fp.fileURL.path;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
52 directory=makePathCompatible(directory);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
53 setTreeDirectory();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
54 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
55 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
56
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
57 function setTreeDirectory(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
58 var t=document.getElementById("file_tree");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
59 t.setAttribute("ref","file://"+directory);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
60 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
61
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
62 function refreshTree(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
63 var t=document.getElementById("file_tree");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
64 t.builder.rebuild();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
65 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
66
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
67 function file_save(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
68
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
69 // get Digilib-Parameter form Browser
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
70 // alert(window.content.location.href);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
71
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
72 var documentpath='';
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
73 try{
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
74 documentpath=window.content.getParameter('fn');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
75 }catch (e){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
76 documentpath='';
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
77 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
78 if (documentpath != ''){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
79 var docPath='urn:echo:'+documentpath;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
80
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
81 var rdfString='<?xml version="1.0"?>' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
82 '<RDF:RDF xmlns:NS1="http://echo.unibe.ch/digilib/rdf#"' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
83 ' xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
84 ' xmlns:d="http://purl.org/dc/elements/1.0/"' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
85 ' xmlns:a="http://www.w3.org/2000/10/annotation-ns#">' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
86 ' <RDF:Seq RDF:about="urn:echo">' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
87 ' <RDF:li RDF:resource="'+docPath+'"/>' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
88 ' </RDF:Seq>' +
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
89 ' <RDF:Description RDF:about="'+docPath+'" NS1:page=0"/>'+
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
90 '</RDF:RDF>';
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
91
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
92 var ds=new RDFDataSource();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
93 ds.parseFromString(rdfString,"http://echo.unibe.ch/digilib/rdf/digilib.rdf");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
94 var node=ds.getNode(docPath);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
95 var arrayParams=window.content.listParameters();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
96 for (i=0; i< arrayParams.length; i++){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
97 var value=window.content.getParameter(arrayParams[i]);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
98 //alert(arrayParams[i]+":"+value);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
99 node.addTarget("http://echo.unibe.ch/digilib/rdf#"+arrayParams[i],value);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
100 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
101 node.addTarget("http://echo.unibe.ch/digilib/rdf#lv","1");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
102 //alert(ds.serializeToString());
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
103 var nsIFilePicker = Components.interfaces.nsIFilePicker;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
104 var fp = Components.classes["@mozilla.org/filepicker;1"]
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
105 .createInstance(nsIFilePicker);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
106 fp.init(window, "Select a File", nsIFilePicker.modeSave);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
107
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
108 // set default direcotry
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
109 var aLocalFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
110 directory=makePathCompatible(directory);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
111 aLocalFile.initWithPath(directory);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
112 fp.displayDirectory=aLocalFile;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
113
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
114 fp.appendFilter("Annotations","*.rdf; *.RDF");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
115 var res=fp.show();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
116 if (res==nsIFilePicker.returnOK){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
117 var thefile=fp.file;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
118 // --- do something with the file here ---
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
119 //alert(fp.file);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
120 //alert(fp.fileURL.path);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
121
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
122 var strFilePath=fp.file.path;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
123 strFilePath=strFilePath.toLowerCase();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
124 if (strFilePath.indexOf('.rdf')<0){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
125 strFilePath=fp.fileURL.path+".rdf";
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
126 }else{
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
127 strFilePath=fp.fileURL.path;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
128 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
129 strFilePath=makePathCompatible(strFilePath);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
130 var f=new File(strFilePath);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
131 //var boolFileExists=f.exists();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
132 //alert(boolFileExists);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
133 f.create();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
134 f.open('w');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
135 f.write(ds.serializeToString());
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
136 f.close();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
137 refreshTree();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
138 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
139 }else{
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
140 alert("Error: no alcatraz component. can't create an annotation.");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
141 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
142 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
143
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
144 function file_local(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
145 // noch nicht programmiert
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
146 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
147
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
148 function file_annotaDB(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
149 alert("At the moment it is not possible to use the annota DB! This feature is not yet programmed.");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
150 var menu_item=document.getElementById('local');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
151 menu_item.setAttribute('checked','true');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
152 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
153
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
154 function tree_click(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
155 var t=document.getElementById("file_tree"); //tree element
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
156 var l=t.view.getItemAtIndex(t.currentIndex); //aus baum treeitem herausholen mit dem selected index (currentIndex)
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
157 //l.firstChild ist treeitem
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
158 var d=l.firstChild.firstChild; //treecell
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
159 var firstLabel=d.getAttribute("label");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
160 var cols=document.getElementById("cols");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
161 var col=cols.childNodes;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
162 var nodes=l.firstChild.childNodes;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
163 var rdf_file="";
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
164 for (var i=0;i<nodes.length;i++){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
165 if (col[i].getAttribute("label")=="URL"){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
166 rdf_file=nodes[i].getAttribute("label");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
167 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
168 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
169 if (rdf_file!=""){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
170 send_annotation(rdf_file);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
171 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
172 return rdf_file;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
173 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
174
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
175
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
176 /***
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
177 * Diese Funktion wird gebraucht um im Dialog den Pfad zu digilib zu setzen
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
178 *
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
179 ***/
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
180 function setDigilibPath(digilibPathValue){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
181 digilib_path=digilibPathValue;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
182 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
183
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
184 /***
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
185 * Dialog tools momentan kann man nur den Pfad zu digilib setzen
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
186 *
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
187 ***/
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
188 function show_dialog(dialog){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
189 if (dialog=="tool path"){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
190 window.openDialog("tools_dialog.xul","funny dialog",
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
191 "chrome",digilib_path,setDigilibPath);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
192 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
193 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
194
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
195
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
196 /***
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
197 * Gibt den Inhalt eines Files als String zurueck
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
198 *
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
199 ***/
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
200 function readFile(str_Filename){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
201 var f=new File(str_Filename);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
202 var str="";
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
203 if (f.isFile()){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
204 f.open();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
205 str=f.read();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
206 f.close();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
207 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
208 return str;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
209 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
210
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
211
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
212
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
213 function send_annotation(rdf_file){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
214 rdf_file=rdf_file.replace(/^file:\/\//,"");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
215 rdf_file=makePathCompatible(rdf_file);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
216 strRdfFile=readFile(rdf_file);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
217 if (strRdfFile!=""){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
218 var formid='mainform';
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
219 var form = createForm(formid, digilib_path+"/digilib.jsp", "post", "_content");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
220 //var form = createForm(formid, "http://sophia.unibe.ch:8080/examples/servlet/RequestRDF", "post", "_content");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
221 //var form = createForm(formid, "http://hera.unibe.ch:8080/examples/servlet/RequestRDF", "post", "_content");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
222 setFormData(form, formid, strRdfFile);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
223 form.submit();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
224 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
225 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
226
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
227 function createForm(formid, action, method, target)
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
228 {
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
229 var form = document.getElementById(formid);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
230 if(form != null)
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
231 document.documentElement.removeChild(form);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
232
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
233 var form = document.createElementNS("http://www.w3.org/1999/xhtml", "form");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
234 form.setAttribute("id", formid);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
235 form.setAttribute("action", action);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
236 form.setAttribute("method", method);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
237 form.setAttribute("target", target);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
238 document.documentElement.appendChild(form);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
239 return form;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
240 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
241
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
242 function setFormData(form, formid, rdf)
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
243 {
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
244 var val1 = document.createElementNS("http://www.w3.org/1999/xhtml", "input");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
245 val1.setAttribute('type', 'hidden');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
246 val1.setAttribute('name', 'rdf');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
247 val1.setAttribute('value', rdf);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
248 form.appendChild(val1);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
249 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
250
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
251
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
252 function getProfileDirectory(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
253 // First get the directory service and query interface it to
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
254 // nsIProperties
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
255 var dirService = Components.
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
256 classes['@mozilla.org/file/directory_service;1'].
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
257 getService(Components.interfaces.nsIProperties);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
258
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
259 // Next get the "ProfD" property of type nsIFile from the directory
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
260 // service, FYI this constant is defined in
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
261 // mozilla/xpcom/io/nsAppDirectoryServiceDefs.h
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
262
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
263 const NS_APP_USER_PROFILE_50_DIR = "ProfD";
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
264 profileDir = dirService.get(NS_APP_USER_PROFILE_50_DIR,
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
265 Components.interfaces.nsIFile);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
266
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
267 // Now that we have it we can show it's path. See nsIFile for the
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
268 // other things you that can be done with profileDir
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
269 //alert(profileDir.path);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
270 return profileDir.path;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
271 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
272
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
273 function getProfile(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
274 var strProfile=readFile(getProfileDirectory()+slash+"annota.dat");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
275 if (strProfile==""){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
276 directory=slash;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
277 digilib_path="http://hera.unibe.ch:8080/alcatraz";
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
278 setProfile();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
279 }else{
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
280 var params=strProfile.split("\n");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
281 for (var i=0;i<params.length;i++){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
282 var key_value=params[i].split("|");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
283 if (key_value[0]=='directory'){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
284 directory=key_value[1];
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
285 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
286 if (key_value[0]=='tool path'){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
287 digilib_path=key_value[1];
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
288 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
289 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
290 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
291 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
292
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
293 function setProfile(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
294 var f=new File(getProfileDirectory()+slash+'annota.dat');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
295 f.create();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
296 f.open('w');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
297 f.write('directory|'+directory+'\n'+'tool path|'+digilib_path+'\n');
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
298 f.close();
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
299 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
300
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
301 function traverse(node){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
302 if (node.hasChildNodes){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
303 var arr_nodes=node.childNodes;
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
304 for (var i=0;i<arr_nodes.length;i++){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
305 if (arr_nodes[i].getAttribute("open")){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
306 //alert(arr_nodes[i].getAttribute("open"));
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
307 if (arr_nodes[i].hasChildNodes && arr_nodes[i].firstChild.hasChildNodes){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
308 alert(arr_nodes[i].firstChild.firstChild.getAttribute("label"));
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
309 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
310 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
311 traverse(arr_nodes[i]);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
312 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
313 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
314 }
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
315
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
316 function traverseTree(){
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
317 var t=document.getElementById("file_tree");
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
318 traverse(t);
bf6d9b7a77d4 Annotation Tool to integrate in chrome sidebar
engler
parents:
diff changeset
319 }