source: main/branches/64_bit_Greenstone/greenstone2/macros/seaweed.dm@ 23523

Last change on this file since 23523 was 23523, checked in by sjm84, 13 years ago

Merging the latest trunk changes into this branch

File size: 5.5 KB
Line 
1package Global
2
3_seaweedscript_ {
4
5
6<!--
7.editable-metadata \{ background-color: \#ffffd0 \}
8.editable-text \{ background-color: \#e0ffe0 \}
9-->
10
11<style type="text/css">
12
13span.editable-metadata \{
14 position:relative; /*this is the key*/
15 z-index:24;
16\}
17
18div.editable-text \{
19 position:relative; /*this is the key*/
20 z-index:24;
21\}
22
23span.tooltip \{ display: none \}
24
25</style>
26
27
28<script type="text/javascript" src="_httpscript_/seaweed.js"></script>
29
30
31<script type="text/javascript">
32
33 function gsdefined(val)
34 \{
35 return (typeof(val) != "undefined");
36 \}
37
38 var tooltipParentElem = null;
39
40 function showTooltip(elem)
41 \{
42
43 if (de.getEditedElements) \{
44
45 // guard against getEditedElements() not being defined
46 // this can happen if we get a onmouseover event
47 // before the document is fully loaded
48
49 var editedHashSet = de.getEditedElements();
50
51 if (editedHashSet.contains(elem)) \{
52 return;
53 \}
54 \}
55
56 elem.style.zIndex="25";
57
58 var metaname = elem.getAttribute("metaname");
59 var tooltip = document.createElement("span");
60 tooltip.setAttribute("class","tooltip");
61 tooltip.setAttribute("id","tooltip");
62
63 tooltip.style.position = "absolute";
64 tooltip.style.zIndex = "26";
65 tooltip.style.top = "0.9em";
66 tooltip.style.left = "1em";
67 tooltip.style.height = "1.1em";
68 tooltip.style.border = "1px solid #660";
69 tooltip.style.backgroundColor = "#ffffe0";
70 tooltip.style.color = "\#000";
71 //tooltip.style.textAlign = "center";
72 tooltip.style.padding = "0.2em";
73
74 tooltip.innerHTML = "<nobr>Click (and then type) to edit <i>" + metaname + "</i> metadata</nobr>";
75
76 tooltipParentElem = elem;
77 setTimeout("delayedShowTooltip()", 2000);
78 elem.appendChild(tooltip);
79
80 \}
81
82 function delayedShowTooltip()
83 \{
84 if (tooltipParentElem!=null) \{
85
86 if (de.getEditedElements) \{
87 var editedHashSet = de.getEditedElements();
88
89 if (editedHashSet.contains(tooltipParentElem)) \{
90 tooltipParentElem = null;
91 return;
92 \}
93 \}
94
95 var tooltip = document.getElementById("tooltip");
96 tooltip.style.display = "block";
97 setTimeout("delayedHideTooltip()", 5000);
98 \}
99 \}
100
101
102 function hideTooltip(elem)
103 \{
104 var tooltip = document.getElementById("tooltip");
105 if (tooltip != null) \{
106 elem.removeChild(tooltip)
107 tooltip.style.display = "none";
108 \}
109
110 tooltipParentElem = null;
111
112 elem.style.zIndex="24";
113 \}
114
115 function delayedHideTooltip(elem)
116 \{
117 if (tooltipParentElem!=null) \{
118 hideTooltip(tooltipParentElem);
119 \}
120 \}
121
122
123
124 var gsapi = new GSAjaxAPI("_gwcgi_","_cgiargc_");
125
126 window.onload=function()\{
127 try \{
128 de.init();
129 if (window.addEventListener) \{
130 window.addEventListener('beforeunload',saveMetadata,true);
131 \}
132 else \{
133 window.attachEvent('onbeforeunload',saveMetadata);
134 \}
135 de.doc.declarePropertySets(\{
136 metadata: \{
137 phMarkup: '<span style="background-color:#DDDDDD;color:black"><em>[Enter a value]</em></span>',
138 name: "metadata"
139 \}
140 \});
141
142 \}
143 catch(err) \{
144 alert("SeaWeed failed to initialise: " + err.message);
145 \}
146 \}
147
148
149
150 function saveMetadataElement(editedElem)
151 \{
152 var docoid = editedElem.getAttribute("docoid");
153
154 if (gsdefined(docoid)) \{
155 var metaname = editedElem.getAttribute("metaname");
156 var metapos = editedElem.getAttribute("metapos");
157 var metavalue= editedElem.innerHTML;
158
159 var metavalue = metavalue.replace(/&nbsp;/g, " ");
160 metavalue = escape(metavalue);
161
162 // alert("docoid = " + docoid + " metaname = " + metaname + " metapos = " + metapos + " metavalue = " + metavalue);
163
164 // console.log("docoid = " + docoid + " metaname = " + metaname + " metapos = " + metapos + " metavalue = " + metavalue);
165
166 gsapi.setDocumentMetadata(docoid,metaname,metapos,metavalue);
167 gsapi.explodeDocument(docoid);
168
169 \}
170
171 return true;
172 \}
173
174 function saveMetadata()
175 \{
176 var editedArray = de.Changes.getChangedEditableSections();
177 // editedHashSet.iterate(function(item) \{ console.log(item.innerHTML); return true \} );
178
179 if (editedArray.length>0) \{
180 var commitChanges = confirm("Commit edited metadata?");
181 if (commitChanges) \{
182 for (i=0; i<editedArray.length; i++)
183 \{
184 saveMetadataElement(editedArray[i]);
185 \}
186
187 \}
188
189 // whether commited or not, now clear list of edited values
190 //clearEditedElements();
191 \}
192
193
194 \}
195
196
197
198 function seaweedReindexCollection() \{
199 var arc = document.getElementById("seaweedRC");
200 arc.innerHTML = "reindexing ...";
201 gsapi.reindexCollection("incremental",seaweedReindexCallback);
202 \}
203
204 function seaweedReindexCallback(xmlHttp) \{
205 var arc = document.getElementById("seaweedRC");
206 arc.innerHTML = "reindexing done.";
207 \}
208
209
210</script>
211
212}
213
214_first-metadata-spanwrap_ {<span metapos="0" metaname="_1_" docoid="_2_" class="editable-metadata">}
215_/first-metadata-spanwrap_ {</span>}
216
217_first-metadata-divwrap_ {<div metapos="0" metaname="_1_" docoid="_2_" class="editable-metadata">}
218_/first-metadata-divwrap_ {</div>}
Note: See TracBrowser for help on using the repository browser.