- Timestamp:
- 2008-08-08T12:17:50+12:00 (16 years ago)
- Location:
- gsdl/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/macros/deposit.dm
r14738 r16680 16 16 # collector 17 17 _globallinks_ {_homelink_} 18 19 # metadata fields that will be displayed in the step1 page, 20 # this is determined by the depositormetadata macro defined in the collection's collect.cfg 21 _metadataconf_ {var DepositorMDFields = new Array();} 22 23 # store any existing metadata values 24 _cachedmetadatavalues_ {var CachedMDValues = new Array();} 18 25 19 26 ####################################################################### … … 146 153 147 154 #here goes the "memorization" macros for each form field. 148 _di1md.dc.Title_ {_If_("_:cgiargdi1md.dc.Title_" eq "_cgiargdi1md.dc.Title_",_cgiargdi1md.dc.Title_,)} 149 _di1md.dc.Creator_ {_If_("_:cgiargdi1md.dc.Creator_" eq "_cgiargdi1md.dc.Creator_",_cgiargdi1md.dc.Creator_,)} 150 _di1md.dc.Description_ {_If_("_:cgiargdi1md.dc.Description_" eq "_cgiargdi1md.dc.Description_",_cgiargdi1md.dc.Description_,)} 155 #_di1md.Title_ {_If_("_:cgiargdi1md.Title_" eq "_cgiargdi1md.Title_",_cgiargdi1md.Title_,)} 156 #_di1md.Creator_ {_If_("_:cgiargdi1md.Creator_" eq "_cgiargdi1md.Creator_",_cgiargdi1md.Creator_,)} 157 #_di1md.Description_ {_If_("_:cgiargdi1md.Description_" eq "_cgiargdi1md.Description_",_cgiargdi1md.Description_,)} 158 #_di1md.Subject_ {_If_("_:cgiargdi1md.Subject_" eq "_cgiargdi1md.Subject_",_cgiargdi1md.Subject,)} 151 159 152 160 _step1scriptextra_ { 161 162 _metadataconf_ 163 _cachedmetadatavalues_ 164 165 function loadForm() \{ 166 167 var formcontainer = document.getElementById('formcontainer'); 168 169 if (!formcontainer) \{ 170 return; 171 \} 172 173 for (i=0; i < DepositorMDFields.length; i++) \{ 174 if (DepositorMDFields[i]==null) \{ 175 continue; 176 \} 177 metadataField = DepositorMDFields[i]; 178 179 var labelCell = document.createElement("td"); 180 labelCell.innerHTML = metadataField.label + ": "; 181 labelCell.setAttribute("title", metadataField.tooltip); 182 183 var cachedValue; 184 if(CachedMDValues[0] !=null && CachedMDValues[0]["di1md." + metadataField.name])\{ 185 cachedValue = CachedMDValues[0]["di1md." + metadataField.name]; 186 \} else \{ 187 cachedValue = ""; 188 \} 189 190 var inputObj; 191 if (metadataField.type=="text") \{ 192 inputObj = document.createElement("input"); 193 inputObj.setAttribute("type","text"); 194 inputObj.setAttribute("size","74"); 195 inputObj.setAttribute("value", cachedValue); 196 \} 197 else if (metadataField.type=="textarea") \{ 198 inputObj = document.createElement("textarea"); 199 inputObj.setAttribute("rows","5"); 200 inputObj.setAttribute("cols", "40"); 201 inputObj.innerHTML = cachedValue; 202 \} 203 inputObj.setAttribute("name", "di1md."+ metadataField.name); 204 205 var inputCell = document.createElement("td"); 206 inputCell.appendChild(inputObj); 207 208 var entry = document.createElement("tr"); 209 entry.appendChild(labelCell); 210 entry.appendChild(inputCell); 211 212 formcontainer.appendChild(entry); 213 \} 214 \} 153 215 154 216 function check\_submit (gotopage) \{ … … 157 219 form.submit(); 158 220 \} 221 222 if (window.addEventListener) window.addEventListener("load", loadForm, false); 223 else if (window.attachEvent) window.attachEvent("onload", loadForm); 224 159 225 } 160 226 … … 165 231 <input type=hidden name="e" value="_decodedcompressedoptions_"> 166 232 <input type=hidden name="p" value="_cgiargp_"> 233 167 234 168 235 <center> … … 178 245 179 246 <!--input goes here--> 180 <p><table> 181 <tr> 182 <td>_textTitle_:</td> 183 <td> <input type=text name=di1md.dc.Title value="_di1md.dc.Title_" size=74></td> 184 </tr> 185 <tr> 186 <td>_textCreator_:</td> 187 <td><input type=text name=di1md.dc.Creator value = "_di1md.dc.Creator_" size=74></td> 188 </tr> 189 <tr> 190 <td>_textDescription_:</td> 191 <td> <textarea rows=5 cols=40 name=di1md.dc.Description>_di1md.dc.Description_</textarea></td> 192 193 </tr> 194 </table> 195 196 <!-- 197 <BR> 198 <BR> 199 <p>_textDescription_: <textarea rows=5 cols=20 name=di1md.dc.Description>_di1md.dc.Description_</textarea></p> 200 </ul> 201 --> 247 <!--dynamic load the metadata elements as configured in the collection's collect.cfg--> 248 <p><table id="formcontainer"></table> 202 249 203 250 <div class="divbar"> </div> … … 249 296 250 297 #here goes the "memorization" macros for each form field. 251 #_di1_ {_If_("_:cgiargdi1md. dc.Title_" eq "_cgiargdi1md.dc.Title_",_cgiargdi1md.dc.Title_,)}252 #_di1md. dc.Creator_ {_If_("_:cgiargdi1md.dc.Creator_" eq "_cgiargdi1md.dc.Creator_",_cgiargdi1md.dc.Creator_,)}298 #_di1_ {_If_("_:cgiargdi1md.Title_" eq "_cgiargdi1md.Title_",_cgiargdi1md.Title_,)} 299 #_di1md.Creator_ {_If_("_:cgiargdi1md.Creator_" eq "_cgiargdi1md.Creator_",_cgiargdi1md.Creator_,)} 253 300 254 301 _step3scriptextra_ { -
gsdl/trunk/runtime-src/src/recpt/depositoraction.cpp
r16310 r16680 362 362 args["di1lastpage"] = lastpage_textt; 363 363 } 364 365 // create cached metadata values 366 text_t cached_metadata_values = ""; 367 cgiargsclass::const_iterator args_here = args.begin(); 368 cgiargsclass::const_iterator args_end = args.end(); 369 while (args_here != args_end) { 370 text_t args_name = (*args_here).first; 371 int prefix_len = macro_prefix.size(); 372 text_t args_prefix = substr(args_name.begin(),args_name.begin()+prefix_len+3); 373 374 if (args_prefix == (macro_prefix+"md.")) { 375 text_t args_val = args[args_name]; 376 text_t args_suffix = substr(args_name.begin()+prefix_len+3,args_name.end()); 377 378 text_tarray mdvalues; 379 splitchar (args_val.begin(), args_val.end(), ',', mdvalues); 380 int numvalues = mdvalues.size(); 381 382 for (int i = 0; i < numvalues; ++i) { 383 if (!mdvalues[i].empty()) { 384 decode_cgi_arg(mdvalues[i]); 385 386 if (cached_metadata_values == "") { 387 cached_metadata_values = "var CachedMDValues = new Array(\\{"; 388 } else { 389 cached_metadata_values += ","; 390 } 391 392 cached_metadata_values += "\"" + args_name + "\":\"" + args_val + "\""; 393 } 394 } 395 } 396 ++args_here; 397 } 398 399 if (cached_metadata_values != "") { 400 cached_metadata_values += "\\});"; 401 args["cachedMDValues"] = cached_metadata_values; 402 } 364 403 } 365 404 return true; … … 420 459 text_t depositorbar = "<table class=wizardbar border=0 cellspacing=4 cellpadding=0><tr>\n"; 421 460 422 if(stepstring == "step") { 461 if(stepstring == "step") { 462 // check configured metadata elements 463 if (args["metadataconf"] == "var DepositorMDFields = new Array();" || args["metadataconf"] == "") { 464 text_t cfgfile_name = filename_cat (collecthome, args[macro_prefix + "dirname"], "etc", "collect.cfg"); 465 text_t cfgfile_content; 466 text_t metadata_str; 467 468 if (read_file (cfgfile_name, cfgfile_content)) { 469 text_t::const_iterator here = cfgfile_content.begin(); 470 text_t::const_iterator end = cfgfile_content.end(); 471 while (here != end) { 472 here = findchar (here, end, 'd'); 473 if (here == end) break; 474 if ((here+17 < end) && (substr (here, here+17) == "depositormetadata")) { 475 here = findchar (here, end, '"'); 476 if (here == end) break; 477 text_t enddelimit = "\"\n"; 478 getdelimitstr (here+1, end, enddelimit, metadata_str); 479 args["metadataconf"] = "var DepositorMDFields = new Array("+metadata_str+");"; 480 } 481 ++here; 482 } 483 } 484 485 if (metadata_str == "") { 486 args["metadataconf"] = "var DepositorMDFields = new Array({\"name\":\"dc.Title\",\"label\":\"Title\",\"tooltip\":\"dc.Title: A name given to the resource.\",\"type\":\"text\"}, {\"name\":\"dc.Creator\",\"label\":\"Creator\",\"tooltip\":\"dc.Creator: An entity primarily responsible for making the content of the resource.\",\"type\":\"text\"}, {\"name\":\"dc.Description\",\"label\":\"Description\",\"tooltip\":\"dc.Description: An account of the content of the resource.\",\"type\":\"textarea\"});"; 487 } 488 } 423 489 424 490 here = depositor_page.begin(); … … 444 510 depositorbar += "<td>_icongreyarrow_</td>\n"; 445 511 446 } 512 } 447 513 448 514 //the build and preview pages are always last … … 467 533 468 534 depositorbar += "</tr></table>\n"; 469 535 536 // set the javascript so that the metadata form can read the existing values 537 if (args["cachedMDValues"] != "") { 538 disp.setmacro("cachedmetadatavalues", "depositor", args["cachedMDValues"]); 539 } 540 if (args["metadataconf"] != "") { 541 disp.setmacro("metadataconf", "depositor", args["metadataconf"]); 542 } 470 543 } 471 544 … … 710 783 metadata_file += " <Description>\n"; 711 784 712 785 713 786 cgiargsclass::const_iterator args_here = args.begin(); 714 787 cgiargsclass::const_iterator args_end = args.end(); … … 735 808 decode_cgi_arg(mdvalues[i]); 736 809 737 metadata_file += " <Metadata mode=\"accumulate\" name=\""; 810 metadata_file += " <Metadata mode=\"accumulate\" name=\""; 738 811 metadata_file += args_suffix; 739 812 metadata_file += "\">"; … … 743 816 } 744 817 } 745 746 } 747 818 } 748 819 749 820 ++args_here;
Note:
See TracChangeset
for help on using the changeset viewer.