diff --git a/plugins/ModsFormBuilder.inc b/plugins/ModsFormBuilder.inc
index 3c135d6e..47dab34c 100644
--- a/plugins/ModsFormBuilder.inc
+++ b/plugins/ModsFormBuilder.inc
@@ -5,9 +5,9 @@
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
class ModsFormBuilder extends FormBuilder {
static $MODS_NS = 'http://www.loc.gov/mods/v3';
- private $cm;
- private $item;
- private $pid;
+ protected $cm;
+ protected $item;
+ protected $pid;
function __construct($pid=null)
{
@@ -43,7 +43,7 @@ class ModsFormBuilder extends FormBuilder {
'#type' => 'fieldset',
'#title' => t('Edit metadata'),
);
-
+
if ($this->cm !== FALSE && $this->item != NULL) {
$form['pid'] = array('#type'=>'hidden','#value'=>$this->pid);
@@ -85,9 +85,12 @@ class ModsFormBuilder extends FormBuilder {
$includeEl=FALSE;
break;
+
case '#edit_metadata_xpath':
$nodeList = $xpath->evaluate($val);
-// echo $val. ' '.$nodeList->length.' '. $nodeList. '
';
+// echo $val. ' '.$nodeList->length.' ';
+// echo $nodeList->item(0)->nodeValue.' ';
+// echo '
';
if (is_string($nodeList))
{
@@ -101,7 +104,15 @@ class ModsFormBuilder extends FormBuilder {
}
} else if ($nodeList->length > 0)
{
- $el['#default_value'] = $nodeList->item(0)->nodeValue;
+ if ($el['#type'] == 'list') {
+ $values=array();
+ for ($i=0;$i<$nodeList->length;$i++) {
+ $values[]=$nodeList->item($i)->nodeValue;
+ }
+ $el['#default_value']=join('; ',$values);
+ } else {
+ $el['#default_value'] = $nodeList->item(0)->nodeValue;
+ }
}
break;
}
@@ -389,19 +400,19 @@ class ModsFormBuilder extends FormBuilder {
$titles=preg_split('/\s+\;\s+/',trim($form_values['mods_alternative_titles']));
foreach ($titles as $t) {
$titleinfo = $dom->createElement('mods:titleInfo');
- $titleinfo->setAttribute('alternative') ;
+ $titleinfo->setAttribute('type','alternative') ;
$title = $dom->createElement('mods:title',$t);
- $titleInfo->appendChild($title);
- $mods->appendChild($title);
+ $titleinfo->appendChild($title);
+ $mods->appendChild($titleinfo);
}
}
if (isset($form_values['mods_alternative_title']) && trim($form_values['mods_alternative_title']) != '') {
$titleinfo = $dom->createElement('mods:titleInfo');
- $titleinfo->setAttribute('alternative') ;
+ $titleinfo->setAttribute('type','alternative') ;
$title = $dom->createElement('mods:title',trim($form_values['mods_alternative_title']));
- $titleInfo->appendChild($title);
- $mods->appendChild($title);
+ $titleinfo->appendChild($title);
+ $mods->appendChild($titleinfo);
}
if (isset($form_values['mods_description']) && trim($form_values['mods_description']) != '') {
@@ -462,7 +473,8 @@ class ModsFormBuilder extends FormBuilder {
$originInfo->appendChild($edition);
$addOriginInfo = TRUE;
}
-
+
+
if (isset($form_values['mods_pubinfo_date']) && trim($form_values['mods_pubinfo_date']) != '' &&
isset($form_values['mods_pubinfo_dateType']) && trim($form_values['mods_pubinfo_dateType']) != '') {
if (in_array($form_values['mods_pubinfo_dateType'], array('issued', 'created', 'copyright', 'captured'))) {
@@ -475,18 +487,45 @@ class ModsFormBuilder extends FormBuilder {
}
$originInfo->appendChild($date);
$addOriginInfo = TRUE;
+ } else {
+ if (isset($form_values['mods_createdDate'])) {
+ $date = $dom->createElement('mods:createdDate',htmlspecialchars(trim($form_values['mods_createdDate'])));
+ $originInfo->appendChild($date);
+ $addOriginInfo = TRUE;
+ }
+
+ if (isset($form_values['mods_issuedDate'])) {
+ $date = $dom->createElement('mods:issuedDate',htmlspecialchars(trim($form_values['mods_issuedDate'])));
+ $originInfo->appendChild($date);
+ $addOriginInfo = TRUE;
+ }
+
+ if (isset($form_values['mods_copyrightDate'])) {
+ $date = $dom->createElement('mods:copyrightDate',htmlspecialchars(trim($form_values['mods_copyrightDate'])));
+ $originInfo->appendChild($date);
+ $addOriginInfo = TRUE;
+ }
+
+ if (isset($form_values['mods_capturedDate'])) {
+ $date = $dom->createElement('mods:capturedDate',htmlspecialchars(trim($form_values['mods_capturedDate'])));
+ $originInfo->appendChild($date);
+ $addOriginInfo = TRUE;
+ }
+
}
if (isset($form_values['mods_pubinfo_journalFreq']) && trim($form_values['mods_pubinfo_journalFreq']) != '') {
$frequency = $dom->createElement('mods:frequency', htmlspecialchars(trim($form_values['mods_pubinfo_journalFreq'])));
$originInfo->appendChild($frequency);
$issuance= $dom->createElement('mods:issuance', 'journal');
+ $originInfo->appendChild($issuance);
$addOriginInfo = TRUE;
}
- else {
+ elseif (isset($form_values['mods_pubinfo_journalFreq'])) {
$issuance= $dom->createElement('mods:issuance', 'monographic');
+ $originInfo->appendChild($issuance);
}
- $originInfo->appendChild($issuance);
+
if ($addOriginInfo) {
$mods->appendChild($originInfo);