annotate xul/annota/annota.js @ 121:2d0ff5652130

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