Ignore:
Timestamp:
2008-08-08T12:17:50+12:00 (16 years ago)
Author:
anna
Message:

Improved customization of metadata sets/elements used in the Depositor. Two aspects involved: the front-end user interface (depositoraction.cpp) and back-end GLI format panel. Associated changes include the depositor's macro file, GLI dictionary and GLI help document

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/runtime-src/src/recpt/depositoraction.cpp

    r16310 r16680  
    362362      args["di1lastpage"] = lastpage_textt;     
    363363    }
     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    }
    364403  }
    365404  return true;
     
    420459  text_t depositorbar = "<table class=wizardbar border=0 cellspacing=4 cellpadding=0><tr>\n";
    421460
    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    }
    423489
    424490    here = depositor_page.begin();
     
    444510      depositorbar += "<td>_icongreyarrow_</td>\n";
    445511
    446     }
     512    }   
    447513
    448514    //the build and preview pages are always last
     
    467533
    468534    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    }   
    470543  }
    471544 
     
    710783    metadata_file += "        <Description>\n";
    711784
    712 
     785   
    713786    cgiargsclass::const_iterator args_here = args.begin();
    714787    cgiargsclass::const_iterator args_end = args.end();
     
    735808        decode_cgi_arg(mdvalues[i]);
    736809
    737         metadata_file += "            <Metadata mode=\"accumulate\" name=\"";
     810        metadata_file += "            <Metadata mode=\"accumulate\" name=\"";       
    738811        metadata_file += args_suffix;
    739812        metadata_file += "\">";
     
    743816      }
    744817    }
    745 
    746       }
    747 
     818      }       
    748819
    749820      ++args_here;
Note: See TracChangeset for help on using the changeset viewer.