1 |
|
---|
2 | function OverlayNotes(divID,metaname)
|
---|
3 | {
|
---|
4 | this.divID = divID;
|
---|
5 | this.metaname = metaname;
|
---|
6 |
|
---|
7 | this.posCount = 0;
|
---|
8 |
|
---|
9 | /* create the Photo Note Container */
|
---|
10 | this.notes = new PhotoNoteContainer(divID);
|
---|
11 |
|
---|
12 | this.getNotes(divID,metaname);
|
---|
13 | }
|
---|
14 |
|
---|
15 | OverlayNotes.prototype.deleteFunction = function(note)
|
---|
16 | {
|
---|
17 | var status = true;
|
---|
18 |
|
---|
19 | if (note && note.id && note.id > 0) {
|
---|
20 | var metaposStr = note.id - 1;
|
---|
21 |
|
---|
22 | var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
|
---|
23 |
|
---|
24 | var removeFromIndexURL = "cgi-bin/metadata-server.pl?a=remove-metadata&site="+gs.xsltParams.site_name+"&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&metaname="+this.metaname+"&metapos=" + metaposStr;
|
---|
25 | var removeFromArchivesURL = "cgi-bin/metadata-server.pl?a=remove-archives-metadata&site="+gs.xsltParams.site_name+"&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&metaname="+this.metaname+"&metapos=" + metaposStr;
|
---|
26 | var removeFromImportURL = "cgi-bin/metadata-server.pl?a=remove-import-metadata&site="+gs.xsltParams.site_name+"&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&metaname="+this.metaname+"&metavalue=" + jsonVal;
|
---|
27 |
|
---|
28 | var indexCallback =
|
---|
29 | {
|
---|
30 | success: function(response)
|
---|
31 | {
|
---|
32 | for(var i = 0; i < this.notes.length; i++)
|
---|
33 | {
|
---|
34 | var currentNote = this.notes[i];
|
---|
35 | if(currentNote.id > note.id)
|
---|
36 | {
|
---|
37 | currentNote.id--;
|
---|
38 | }
|
---|
39 | }
|
---|
40 | this.posCount--;
|
---|
41 | },
|
---|
42 | failed: function(){alert("Failed to delete index metadata of note with id: " + note.id);},
|
---|
43 | };
|
---|
44 |
|
---|
45 | var archiveCallback =
|
---|
46 | {
|
---|
47 | success: function(){buildFunction(gs.cgiParams.c);},
|
---|
48 | failed: function(){alert("Failed to delete archive metadata of note with id: " + note.id);}
|
---|
49 | }
|
---|
50 |
|
---|
51 | var importCallback =
|
---|
52 | {
|
---|
53 | success: function(){},
|
---|
54 | failed: function(){alert("Failed to delete import metadata of note with id: " + note.id);}
|
---|
55 | }
|
---|
56 |
|
---|
57 | YAHOO.util.Connect.asyncRequest("GET", removeFromIndexURL, indexCallback);
|
---|
58 | YAHOO.util.Connect.asyncRequest("GET", removeFromArchivesURL, archiveCallback);
|
---|
59 | YAHOO.util.Connect.asyncRequest("GET", removeFromImportURL, importCallback);
|
---|
60 | }
|
---|
61 | else {
|
---|
62 | alert("Failed to find valid note data to delete");
|
---|
63 | status = false;
|
---|
64 | }
|
---|
65 |
|
---|
66 | return status;
|
---|
67 | }
|
---|
68 |
|
---|
69 | OverlayNotes.prototype.saveFunction = function(note)
|
---|
70 | {
|
---|
71 | var saveIndexCallback =
|
---|
72 | {
|
---|
73 | success: function(response){},
|
---|
74 | failed: function(reponse){ alert("Failed to save index metadata of note with id: " + note.id)},
|
---|
75 | };
|
---|
76 |
|
---|
77 | var saveArchivesCallback =
|
---|
78 | {
|
---|
79 | success: function(response){buildFunction(gs.cgiParams.c);},
|
---|
80 | failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
|
---|
81 | };
|
---|
82 |
|
---|
83 | var saveImportCallback =
|
---|
84 | {
|
---|
85 | success: function(response){},
|
---|
86 | failed: function(response){ alert("Failed in save import metadata of note with id: " + note.id) }
|
---|
87 | };
|
---|
88 |
|
---|
89 | var jsonVal = '{"caption":"' + note.text + '", "area":{"x":' + note.rect.left + ', "y":' + note.rect.top + ', "width":' + note.rect.width + ', "height":' + note.rect.height + '}}';
|
---|
90 | var metaposStr = (note && note.id && note.id > 0) ? note.id - 1 : this.posCount;
|
---|
91 |
|
---|
92 | var saveIndexURL = "cgi-bin/metadata-server.pl?a=set-metadata&site="+gs.xsltParams.site_name+"&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&metaname="+this.metaname+"&metamode=override&metavalue=" + jsonVal + "&metapos=" + metaposStr;
|
---|
93 | var saveArchivesURL = "cgi-bin/metadata-server.pl?a=set-archives-metadata&site="+gs.xsltParams.site_name+"&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&metaname="+this.metaname+"&metamode=override&metavalue=" + jsonVal + "&metapos=" + metaposStr;
|
---|
94 | var saveImportURL = "cgi-bin/metadata-server.pl?a=set-import-metadata&site="+gs.xsltParams.site_name+"&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&metaname="+this.metaname+"&metamode=override&metavalue=" + jsonVal + "&metapos=" + metaposStr;
|
---|
95 | YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
|
---|
96 | YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
|
---|
97 | YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
|
---|
98 |
|
---|
99 | return 1;
|
---|
100 | }
|
---|
101 |
|
---|
102 | OverlayNotes.prototype.getNotes = function(divID,metaname)
|
---|
103 | {
|
---|
104 | if(gs.variables[metaname] == null || gs.variables[metaname] == undefined)
|
---|
105 | {
|
---|
106 | console.log("No photo notes");
|
---|
107 | return;
|
---|
108 | }
|
---|
109 |
|
---|
110 | for(var i = 0; i < gs.variables[metaname].length; i++)
|
---|
111 | {
|
---|
112 | var metavals = gs.variables[metaname];
|
---|
113 | var note = metavals[i];
|
---|
114 | if(!note)
|
---|
115 | {
|
---|
116 | continue;
|
---|
117 | }
|
---|
118 |
|
---|
119 | var newNote = new PhotoNote(note.caption, divID, i+1, new PhotoNoteRect(note.area.x,note.area.y,note.area.width,note.area.height));
|
---|
120 |
|
---|
121 | var that = this;
|
---|
122 | newNote.onsave = function(note) { return that.saveFunction(note) };
|
---|
123 | newNote.ondelete = function(note) { return that.deleteFunction(note) };
|
---|
124 |
|
---|
125 | this.notes.AddNote(newNote);
|
---|
126 | this.posCount++;
|
---|
127 | }
|
---|
128 |
|
---|
129 | this.addNoteOverAndOutHandlers();
|
---|
130 | }
|
---|
131 |
|
---|
132 | OverlayNotes.prototype.AddNote = function()
|
---|
133 | {
|
---|
134 | this.posCount++;
|
---|
135 |
|
---|
136 | var photoPos = $("#"+this.divID).offset();
|
---|
137 |
|
---|
138 | var newNote = new PhotoNote('Add note text here...',this.divID,this.posCount,new PhotoNoteRect(20,20,50,50));
|
---|
139 |
|
---|
140 | var that = this;
|
---|
141 | newNote.onsave = function(note) { return that.saveFunction(note) };
|
---|
142 | newNote.ondelete = function(note) { return that.deleteFunction(note) };
|
---|
143 | this.notes.AddNote(newNote);
|
---|
144 |
|
---|
145 | this.addNoteOverAndOutHandlers();
|
---|
146 | newNote.Select();
|
---|
147 | }
|
---|
148 |
|
---|
149 | OverlayNotes.prototype.addNoteOverAndOutHandlers = function()
|
---|
150 | {
|
---|
151 | var divs = document.getElementsByTagName("DIV");
|
---|
152 | for(var i = 0; i < divs.length; i++)
|
---|
153 | {
|
---|
154 | if(divs[i].getAttribute("class") && divs[i].getAttribute("class").search("fn-area") != -1)
|
---|
155 | {
|
---|
156 | divs[i].onmouseover = function(){_zoomEnabled = false;}
|
---|
157 | divs[i].onmouseout = function(){_zoomEnabled = true;}
|
---|
158 | }
|
---|
159 | }
|
---|
160 | }
|
---|
161 |
|
---|
162 | function addStatusBar()
|
---|
163 | {
|
---|
164 | if (document.getElementById("buildStatusBar") != null) {
|
---|
165 | // already been added
|
---|
166 | return;
|
---|
167 | }
|
---|
168 |
|
---|
169 | var textDiv = document.getElementById("gs-document");
|
---|
170 | var buildStatusBar = document.createElement("div");
|
---|
171 | buildStatusBar.setAttribute("id", "buildStatusBar");
|
---|
172 | buildStatusBar.setAttribute("class", "ui-state-default ui-corner-all");
|
---|
173 | buildStatusBar.setAttribute("style", "visibility:hidden; width:100%; margin-bottom: 10px;");
|
---|
174 | var buildingMessage = document.createElement("div");
|
---|
175 | buildingMessage.setAttribute("id", "buildMessage");
|
---|
176 | buildingMessage.setAttribute("style", "width:50%; padding:3px; margin:5px auto; text-align:center;");
|
---|
177 | buildStatusBar.appendChild(buildingMessage);
|
---|
178 |
|
---|
179 | textDiv.insertBefore(buildStatusBar, textDiv.firstChild);
|
---|
180 | }
|
---|
181 |
|
---|
182 | function prepopulateAnnotatorSearchBar()
|
---|
183 | {
|
---|
184 | if(gs.cgiParams.s1_query && gs.cgiParams.s1_index == "GE")
|
---|
185 | {
|
---|
186 | $("#annotator-filter-text").val(gs.cgiParams.s1_query).keyup().blur();
|
---|
187 | console.log("AAA");
|
---|
188 | }
|
---|
189 |
|
---|
190 | if(gs.cgiParams.s1_query && gs.cgiParams.s1_index == "GT")
|
---|
191 | {
|
---|
192 | $("#annotator-filter-tags").val(gs.cgiParams.s1_query).keyup().blur();
|
---|
193 | console.log("BBB");
|
---|
194 | }
|
---|
195 |
|
---|
196 | if(gs.cgiParams.s1_query && gs.cgiParams.s1_index == "GX")
|
---|
197 | {
|
---|
198 | $("#annotator-filter-user").val(gs.cgiParams.s1_query).keyup().blur();
|
---|
199 | console.log("CCC");
|
---|
200 | }
|
---|
201 | }
|
---|
202 |
|
---|
203 | function addPrevNextPageButtons()
|
---|
204 | {
|
---|
205 | var buttonDiv = document.createElement("DIV");
|
---|
206 | var buttonTable = document.createElement("TABLE");
|
---|
207 | var buttonRow = document.createElement("TR");
|
---|
208 | var buttonPrevCell = document.createElement("TD");
|
---|
209 | var buttonNextCell = document.createElement("TD");
|
---|
210 | buttonRow.appendChild(buttonPrevCell);
|
---|
211 | buttonRow.appendChild(buttonNextCell);
|
---|
212 | buttonTable.appendChild(buttonRow);
|
---|
213 | buttonDiv.appendChild(buttonTable);
|
---|
214 |
|
---|
215 | buttonDiv.setAttribute("style", "width:100%");
|
---|
216 | buttonTable.setAttribute("style", "margin:auto;");
|
---|
217 | buttonPrevCell.setAttribute("style", "padding:10px;");
|
---|
218 | buttonNextCell.setAttribute("style", "padding:10px;");
|
---|
219 |
|
---|
220 | document.getElementById("gs-document-text").appendChild(buttonDiv);
|
---|
221 |
|
---|
222 | gs.functions.getArchivesMetadata(gs.cgiParams.c, gs.xsltParams.site_name, gs.cgiParams.d, "SourceFile", null, function(meta)
|
---|
223 | {
|
---|
224 | var sourceFilename = meta.getValue();
|
---|
225 | var fileNameSegments = sourceFilename.split("-");
|
---|
226 | var finalSegment = fileNameSegments[fileNameSegments.length-1];
|
---|
227 |
|
---|
228 | var extIndex = finalSegment.indexOf(".");
|
---|
229 | var ext = "";
|
---|
230 | if(extIndex != -1)
|
---|
231 | {
|
---|
232 | ext = finalSegment.substring(extIndex);
|
---|
233 | finalSegment = finalSegment.substring(0, extIndex);
|
---|
234 | }
|
---|
235 | var finalNumber = parseInt(finalSegment);
|
---|
236 |
|
---|
237 | var prevFilename = "";
|
---|
238 | var nextFilename = "";
|
---|
239 | for(var i = 0; i < fileNameSegments.length - 1; i++)
|
---|
240 | {
|
---|
241 | prevFilename += fileNameSegments[i] + "-";
|
---|
242 | nextFilename += fileNameSegments[i] + "-";
|
---|
243 | }
|
---|
244 |
|
---|
245 | if(finalNumber - 1 >= 0)
|
---|
246 | {
|
---|
247 | var prevFinalNumber = "" + (finalNumber - 1);
|
---|
248 | while(prevFinalNumber.length < finalSegment.length)
|
---|
249 | {
|
---|
250 | prevFinalNumber = "0" + prevFinalNumber;
|
---|
251 | }
|
---|
252 | prevFilename += prevFinalNumber + ext;
|
---|
253 |
|
---|
254 | prevButtonCallback =
|
---|
255 | {
|
---|
256 | success:function(response)
|
---|
257 | {
|
---|
258 | var text = response.responseText;
|
---|
259 | var startIndex = text.indexOf("nodeID=\"");
|
---|
260 | if(startIndex == -1)
|
---|
261 | {
|
---|
262 | return;
|
---|
263 | }
|
---|
264 | startIndex += 8;
|
---|
265 | endIndex = text.indexOf("\"", startIndex + 1);
|
---|
266 |
|
---|
267 | var id = text.substring(startIndex, endIndex);
|
---|
268 |
|
---|
269 | var prevLink = document.createElement("A");
|
---|
270 | prevLink.innerHTML = "Previous Page";
|
---|
271 | prevLink.setAttribute("href", gs.xsltParams.library_name + "?a=d&d=" + id + "&c=" + gs.cgiParams.c + "&dt=hierarchy&ed=1");
|
---|
272 | buttonPrevCell.appendChild(prevLink);
|
---|
273 | },
|
---|
274 | failed:function(response){console.log("Search for previous document failed");}
|
---|
275 | }
|
---|
276 | YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=q&sa=&rt=rd&s=TextQuery&c=pj-flat&startPage=1&s1.query=" + prevFilename.replace(/-/g, " ") + "&s1.index=SO&o=xml", prevButtonCallback);
|
---|
277 | }
|
---|
278 |
|
---|
279 | var nextFinalNumber = "" + (finalNumber + 1);
|
---|
280 | while(nextFinalNumber.length < finalSegment.length)
|
---|
281 | {
|
---|
282 | nextFinalNumber = "0" + nextFinalNumber;
|
---|
283 | }
|
---|
284 | nextFilename += nextFinalNumber + ext;
|
---|
285 |
|
---|
286 | nextButtonCallback =
|
---|
287 | {
|
---|
288 | success:function(response)
|
---|
289 | {
|
---|
290 | var text = response.responseText;
|
---|
291 | var startIndex = text.indexOf("nodeID=\"");
|
---|
292 | if(startIndex == -1)
|
---|
293 | {
|
---|
294 | return;
|
---|
295 | }
|
---|
296 | startIndex += 8;
|
---|
297 | endIndex = text.indexOf("\"", startIndex + 1);
|
---|
298 |
|
---|
299 | var id = text.substring(startIndex, endIndex);
|
---|
300 |
|
---|
301 | var nextLink = document.createElement("A");
|
---|
302 | nextLink.innerHTML = "Next Page";
|
---|
303 | nextLink.setAttribute("href", gs.xsltParams.library_name + "?a=d&d=" + id + "&c=" + gs.cgiParams.c + "&dt=hierarchy&ed=1");
|
---|
304 | buttonNextCell.appendChild(nextLink);
|
---|
305 | },
|
---|
306 | failed:function(response){console.log("Search for next document failed");}
|
---|
307 | }
|
---|
308 |
|
---|
309 | YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=q&sa=&rt=rd&s=TextQuery&c=pj-flat&startPage=1&s1.query=" + nextFilename.replace(/-/g, " ") + "&s1.index=SO&o=xml", nextButtonCallback);
|
---|
310 | });
|
---|
311 | }
|
---|
312 |
|
---|
313 | function addSocialLinks()
|
---|
314 | {
|
---|
315 | var socialLinksDiv = document.createElement("DIV");
|
---|
316 | socialLinksDiv.setAttribute("class", "addthis_toolbox addthis_default_style");
|
---|
317 |
|
---|
318 | var facebookLink = document.createElement("A");
|
---|
319 | facebookLink.setAttribute("class", "addthis_button_facebook_like");
|
---|
320 | facebookLink.setAttribute("fb:like:layout", "button_count");
|
---|
321 | socialLinksDiv.appendChild(facebookLink);
|
---|
322 |
|
---|
323 | var twitterLink = document.createElement("A");
|
---|
324 | twitterLink.setAttribute("class", "addthis_button_tweet");
|
---|
325 | socialLinksDiv.appendChild(twitterLink);
|
---|
326 |
|
---|
327 | var gplusLink = document.createElement("A");
|
---|
328 | gplusLink.setAttribute("class", "addthis_button_google_plusone");
|
---|
329 | gplusLink.setAttribute("g:plusone:size", "medium");
|
---|
330 | socialLinksDiv.appendChild(gplusLink);
|
---|
331 |
|
---|
332 | var addThisLink = document.createElement("A");
|
---|
333 | addThisLink.setAttribute("class", "addthis_counter addthis_pill_style");
|
---|
334 | socialLinksDiv.appendChild(addThisLink);
|
---|
335 |
|
---|
336 | var script = document.createElement("SCRIPT");
|
---|
337 | script.setAttribute("type", "text/javascript");
|
---|
338 | script.setAttribute("src", "http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4f5fe0cf41940d54");
|
---|
339 | socialLinksDiv.appendChild(script);
|
---|
340 |
|
---|
341 | document.getElementById("gs-document-text").appendChild(socialLinksDiv);
|
---|
342 | }
|
---|