34 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php');
35 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php');
56 $this->lng->loadLanguageModule(
'meta');
58 $this->tabs_gui = $ilTabs;
70 $next_class = $this->ctrl->getNextClass($this);
71 $cmd = $this->ctrl->getCmd();
95 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.show_records.html',
'Services/AdvancedMetaData');
97 include_once(
"./Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordTableGUI.php");
99 $table_gui->setTitle($this->lng->txt(
"md_record_list_table"));
100 $table_gui->parseRecords($this->record_objs);
101 $table_gui->addCommandButton(
"updateRecords", $this->lng->txt(
"save"));
102 $table_gui->addCommandButton(
'createRecord',$this->lng->txt(
'add'));
103 $table_gui->addMultiCommand(
"exportRecords",$this->lng->txt(
'export'));
104 $table_gui->addMultiCommand(
"confirmDeleteRecords", $this->lng->txt(
"delete"));
105 $table_gui->setSelectAllCheckbox(
"record_id");
106 $this->tpl->setVariable(
'RECORD_TABLE',$table_gui->getHTML());
112 if (is_object($this->form))
114 $this->tpl->setVariable(
'SUBSTITUTION_TABLE',$this->form->getHTML());
129 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDSubstitution.php');
131 $sub->resetSubstitutions(array());
132 $sub->enableDescription(
$_POST[
'enabled_desc_'.$obj_type]);
133 $sub->enableFieldNames((
int)
$_POST[
'enabled_field_names_'.$obj_type]);
135 if(isset(
$_POST[
'position'][$obj_type]))
137 asort(
$_POST[
'position'][$obj_type],SORT_NUMERIC);
138 foreach(
$_POST[
'position'][$obj_type] as $field_id => $pos)
140 if(isset(
$_POST[
'show'][$obj_type][$field_id]) and
$_POST[
'show'][$obj_type][$field_id])
142 $newline = $bold =
false;
143 if(isset(
$_POST[
'bold'][$obj_type][$field_id]) and
$_POST[
'bold'][$obj_type][$field_id])
147 if(isset(
$_POST[
'newline'][$obj_type][$field_id]) and
$_POST[
'newline'][$obj_type][$field_id])
151 $sub->appendSubstitution($field_id,$bold,$newline);
182 if(!isset(
$_POST[
'record_id']))
188 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordXMLWriter.php');
190 $xml_writer->write();
192 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordExportFiles.php');
194 $export_files->create($xml_writer->xmlDumpMem());
210 $this->tabs_gui->setSubTabActive(
'md_adv_file_list');
212 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordExportFiles.php');
214 $file_data =
$files->readFilesInfo();
216 include_once(
"./Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordExportFilesTableGUI.php");
218 $table_gui->setTitle($this->lng->txt(
"md_record_export_table"));
219 $table_gui->parseFiles($file_data);
220 $table_gui->addMultiCommand(
"downloadFile",$this->lng->txt(
'download'));
221 $table_gui->addMultiCommand(
"confirmDeleteFiles", $this->lng->txt(
"delete"));
222 $table_gui->addCommandButton(
'showFiles',$this->lng->txt(
'cancel'));
223 $table_gui->setSelectAllCheckbox(
"file_id");
225 $this->tpl->setContent($table_gui->getHTML());
237 if(!isset(
$_POST[
'file_id']) or count(
$_POST[
'file_id']) != 1)
244 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordExportFiles.php');
246 $abs_path =
$files->getAbsolutePathByFileId((
int)
$_POST[
'file_id'][0]);
259 if(!isset(
$_POST[
'file_id']))
266 include_once(
"Services/Utilities/classes/class.ilConfirmationGUI.php");
270 $c_gui->setFormAction($this->ctrl->getFormAction($this,
"deleteFiles"));
271 $c_gui->setHeaderText($this->lng->txt(
"md_adv_delete_files_sure"));
272 $c_gui->setCancel($this->lng->txt(
"cancel"),
"showFiles");
273 $c_gui->setConfirm($this->lng->txt(
"confirm"),
"deleteFiles");
275 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordExportFiles.php');
277 $file_data =
$files->readFilesInfo();
281 foreach(
$_POST[
"file_id"] as $file_id)
283 $info = $file_data[$file_id];
284 $c_gui->addItem(
"file_id[]", $file_id, is_array($info[
'name']) ? implode(
',',$info[
'name']) :
'No Records');
286 $this->tpl->setContent($c_gui->getHTML());
298 if(!isset(
$_POST[
'file_id']))
305 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordExportFiles.php');
308 foreach(
$_POST[
'file_id'] as $file_id)
310 $files->deleteByFileId((
int) $file_id);
324 if(!isset(
$_POST[
'record_id']))
331 include_once(
"Services/Utilities/classes/class.ilConfirmationGUI.php");
335 $c_gui->setFormAction($this->ctrl->getFormAction($this,
"deleteRecords"));
336 $c_gui->setHeaderText($this->lng->txt(
"md_adv_delete_record_sure"));
337 $c_gui->setCancel($this->lng->txt(
"cancel"),
"showRecords");
338 $c_gui->setConfirm($this->lng->txt(
"confirm"),
"deleteRecords");
341 foreach(
$_POST[
"record_id"] as $record_id)
344 $c_gui->addItem(
"record_id[]", $record_id, $record->getTitle() ? $record->getTitle() :
'No Title');
346 $this->tpl->setContent($c_gui->getHTML());
357 if(!isset(
$_POST[
'record_id']))
363 foreach(
$_POST[
'record_id'] as $record_id)
384 $new_types = isset(
$_POST[
'obj_types'][$record_obj->getRecordId()]) ?
385 $_POST[
'obj_types'][$record_obj->getRecordId()] :
387 $record_obj->setAssignedObjectTypes($new_types);
388 $record_obj->setActive(isset(
$_POST[
'active'][$record_obj->getRecordId()]));
389 $record_obj->update();
403 if(!isset(
$_POST[
'field_id']))
409 $this->ctrl->saveParameter($this,
'record_id');
411 include_once(
"Services/Utilities/classes/class.ilConfirmationGUI.php");
415 $c_gui->setFormAction($this->ctrl->getFormAction($this,
"deleteFields"));
416 $c_gui->setHeaderText($this->lng->txt(
"md_adv_delete_fields_sure"));
417 $c_gui->setCancel($this->lng->txt(
"cancel"),
"showRecords");
418 $c_gui->setConfirm($this->lng->txt(
"confirm"),
"deleteFields");
421 foreach(
$_POST[
"field_id"] as $field_id)
424 $c_gui->addItem(
"field_id[]", $field_id, $field->getTitle() ? $field->getTitle() :
'No Title');
426 $this->tpl->setContent($c_gui->getHTML());
438 if(!isset(
$_POST[
'field_id']))
444 foreach(
$_POST[
"field_id"] as $field_id)
465 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.edit_record.html',
'Services/AdvancedMetaData');
466 $this->ctrl->saveParameter($this,
'record_id');
469 $this->tpl->setVariable(
'EDIT_RECORD_TABLE',$this->form->getHTML());
472 include_once(
'./Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php');
475 include_once(
"./Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldTableGUI.php");
477 $table_gui->setTitle($this->lng->txt(
"md_adv_field_table"));
478 $table_gui->parseDefinitions($fields);
479 $table_gui->addCommandButton(
"updateFields", $this->lng->txt(
"save"));
480 $table_gui->addCommandButton(
'createField',$this->lng->txt(
'add'));
481 $table_gui->addCommandButton(
'showRecords',$this->lng->txt(
'cancel'));
482 $table_gui->addMultiCommand(
"confirmDeleteFields", $this->lng->txt(
"delete"));
483 $table_gui->setSelectAllCheckbox(
"field_id");
485 $this->tpl->setVariable(
'FIELDS_TABLE',$table_gui->getHTML());
496 if(!isset(
$_GET[
'record_id']) or !
$_GET[
'record_id'])
503 if(!isset(
$_POST[
'position']) or !is_array(
$_POST[
'position']))
509 asort(
$_POST[
'position'],SORT_NUMERIC);
512 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php');
513 foreach(
$_POST[
'position'] as $field_id => $pos)
516 $definition->setPosition($counter++);
517 $definition->enableSearchable(isset(
$_POST[
'searchable'][$field_id]) ?
true :
false);
518 $definition->update();
537 if(!isset(
$_GET[
'record_id']) or !
$_GET[
'record_id'])
546 if(!$this->record->validate())
552 $this->record->update();
568 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.new_record.html',
'Services/AdvancedMetaData');
572 $this->tpl->setVariable(
'NEW_RECORD_TABLE',$this->form->getHTML());
576 $this->tpl->setVariable(
'IMPORT_RECORD_TABLE',$this->import_form->getHTML());
587 if(is_object($this->import_form))
592 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
594 $this->import_form->setMultipart(
true);
595 $this->import_form->setFormAction($this->ctrl->getFormAction($this));
599 $file->setSuffixes(array(
'xml'));
600 $file->setRequired(
true);
601 $this->import_form->addItem(
$file);
603 $this->import_form->setTitle($this->lng->txt(
'md_adv_import_record'));
604 $this->import_form->addCommandButton(
'importRecord',$this->lng->txt(
'import'));
605 $this->import_form->addCommandButton(
'editRecord',$this->lng->txt(
'cancel'));
618 if(!$this->import_form->checkInput())
620 $this->import_form->setValuesByPost();
625 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordImportFiles.php');
627 if(!$create_time = $import_files->moveUploadedFile($_FILES[
'file'][
'tmp_name']))
635 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordParser.php');
640 $parser->startParsing();
644 $parser->startParsing();
648 catch(ilSAXParserException $exc)
655 $import_files->deleteFileByCreationDate($create_time);
674 if(!$this->record->validate())
680 $this->record->save();
693 $this->ctrl->saveParameter($this,
'record_id');
694 $this->ctrl->saveParameter($this,
'field_id');
698 $this->tpl->setContent($this->form->getHTML());
711 $this->ctrl->saveParameter($this,
'record_id');
716 if(!$this->field_definition->validate())
722 $this->field_definition->update();
735 $this->ctrl->saveParameter($this,
'record_id');
737 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php');
740 $this->tpl->setContent($this->form->getHTML());
756 if(isset($_GET[
'field_id']) and $_GET[
'field_id'])
775 $this->ctrl->saveParameter($this,
'record_id');
779 if(!$this->field_definition->validate())
785 $this->field_definition->add();
798 if(is_object($this->field_form))
803 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
806 $this->form->setFormAction($this->ctrl->getFormAction($this));
810 $title->setValue($this->field_definition->getTitle());
813 $title->setRequired(
true);
814 $this->form->addItem(
$title);
818 $desc->setValue($this->field_definition->getDescription());
821 $this->form->addItem(
$desc);
825 $check->
setChecked($this->field_definition->isSearchable());
827 $this->form->addItem($check);
831 $radio->
setValue($this->field_definition->getFieldType() ?
832 $this->field_definition->getFieldType() :
834 $radio->setRequired(
true);
837 $radio->addOption($radio_option);
840 $radio->addOption($radio_option);
843 $radio->addOption($radio_option);
846 $radio->addOption($radio_option);
848 $values = $this->field_definition->getFieldValues();
850 $max_values = max(count($values),
$_SESSION[
'num_values'] ?
$_SESSION[
'num_values'] : 5);
851 $_SESSION[
'num_values'] = $max_values;
852 for($i = 1; $i <= $max_values;$i++)
855 $title->setValue(isset($values[$i - 1]) ? $values[$i - 1] :
'');
858 $radio_option->addSubItem(
$title);
860 $this->form->addItem($radio);
865 $this->form->setTitle($this->lng->txt(
'md_adv_create_field'));
866 $this->form->addCommandButton(
'saveField',$this->lng->txt(
'create'));
867 $this->form->addCommandButton(
'addValue',$this->lng->txt(
'md_adv_add_value'));
868 $this->form->addCommandButton(
'editRecord',$this->lng->txt(
'cancel'));
873 $this->form->setTitle($this->lng->txt(
'md_adv_edit_field'));
874 $this->form->addCommandButton(
'updateField',$this->lng->txt(
'save'));
875 $this->form->addCommandButton(
'addValue',$this->lng->txt(
'md_adv_add_value'));
876 $this->form->addCommandButton(
'editRecord',$this->lng->txt(
'cancel'));
889 if(is_object($this->form))
894 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
897 $this->form->setFormAction($this->ctrl->getFormAction($this));
901 $title->setValue($this->record->getTitle());
904 $title->setRequired(
true);
905 $this->form->addItem(
$title);
909 $desc->setValue($this->record->getDescription());
912 $this->form->addItem(
$desc);
916 $check->
setChecked($this->record->isActive());
918 $this->form->addItem($check);
921 $section->setTitle($this->lng->txt(
'md_obj_types'));
927 $check->
setChecked(in_array($type,$this->record->getAssignedObjectTypes()) ?
true :
false);
928 $check->setValue($type);
929 $this->form->addItem($check);
936 $this->form->setTitle($this->lng->txt(
'md_adv_create_record'));
937 $this->form->addCommandButton(
'saveRecord',$this->lng->txt(
'add'));
938 $this->form->addCommandButton(
'showRecords',$this->lng->txt(
'cancel'));
943 $this->form->setTitle($this->lng->txt(
'md_adv_edit_record'));
944 $this->form->addCommandButton(
'updateRecord',$this->lng->txt(
'save'));
945 $this->form->addCommandButton(
'showRecords',$this->lng->txt(
'cancel'));
958 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
966 $this->form->setFormAction($this->ctrl->getFormAction($this));
967 #$this->form->setTableWidth('100%');
970 foreach($visible_records as $obj_type => $records)
972 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDSubstitution.php');
978 $section->setTitle($this->lng->txt(
'objs_'.$obj_type));
981 $check =
new ilCheckboxInputGUI($this->lng->txt(
'description'),
'enabled_desc_'.$obj_type);
983 $check->setOptionTitle($this->lng->txt(
'md_adv_desc_show'));
984 $check->setChecked($sub->isDescriptionEnabled() ?
true :
false);
985 $this->form->addItem($check);
987 $check =
new ilCheckboxInputGUI($this->lng->txt(
'md_adv_field_names'),
'enabled_field_names_'.$obj_type);
989 $check->setOptionTitle($this->lng->txt(
'md_adv_fields_show'));
990 $check->setChecked($sub->enabledFieldNames() ?
true :
false);
991 $this->form->addItem($check);
993 #$area = new ilTextAreaInputGUI($this->lng->txt('md_adv_substitution'),'substitution_'.$obj_type);
994 #$area->setUseRte(true);
995 #$area->setRteTagSet('standard');
996 #$area->setValue(ilUtil::prepareFormOutput($sub->getSubstitutionString()));
999 #$this->form->addItem($area);
1002 $definitions = $sub->sortDefinitions($definitions);
1005 foreach($definitions as $definition_id)
1009 if($def->isDeleted())
1015 $title = $def->getTitle().
' ('.$title.
')';
1018 $check->setValue(1);
1019 $check->setOptionTitle($this->lng->txt(
'md_adv_show'));
1020 $check->setChecked($sub->isSubstituted($definition_id));
1022 $pos =
new ilTextInputGUI($this->lng->txt(
'position'),
'position['.$obj_type.
']['.$definition_id.
']');
1024 $pos->setMaxLength(4);
1025 $pos->setValue(sprintf(
'%.1f',$counter++));
1026 $check->addSubItem($pos);
1028 $bold =
new ilCheckboxInputGUI($this->lng->txt(
'bold'),
'bold['.$obj_type.
']['.$definition_id.
']');
1030 $bold->setChecked($sub->isBold($definition_id));
1031 $check->addSubItem($bold);
1033 $bold =
new ilCheckboxInputGUI($this->lng->txt(
'newline'),
'newline['.$obj_type.
']['.$definition_id.
']');
1035 $bold->setChecked($sub->hasNewline($definition_id));
1036 $check->addSubItem($bold);
1039 $this->form->addItem($check);
1067 $this->form->setTitle($this->lng->txt(
'md_adv_substitution_table'));
1068 $this->form->addCommandButton(
'updateSubstitutions',$this->lng->txt(
'save'));
1082 $this->record->setAssignedObjectTypes(isset(
$_POST[
'obj_types']) ?
$_POST[
'obj_types'] : array());
1092 $this->field_definition->setRecordId((
int)
$_GET[
'record_id']);
1095 $this->field_definition->enableSearchable(isset(
$_POST[
'searchable']) ?
true :
false);
1097 $this->field_definition->setFieldValues(array());
1099 for($i = 1; $i <=
$_SESSION[
'num_values'];$i++)
1101 if(isset(
$_POST[
'value_'.$i]))
1103 $this->field_definition->appendFieldValue(
$_POST[
'value_'.$i]);
1115 if(is_object($this->record))
1117 return $this->record;
1120 $record_id = isset(
$_GET[
'record_id']) ?
1121 $_GET[
'record_id'] :
1133 $this->tabs_gui->clearSubTabs();
1135 $this->tabs_gui->addSubTabTarget(
"md_adv_record_list",
1136 $this->ctrl->getLinkTarget($this,
"showRecords"),
1142 $this->tabs_gui->addSubTabTarget(
"md_adv_file_list",
1143 $this->ctrl->getLinkTarget($this,
"showFiles"),
1158 if(!isset($this->record_objs))
1162 return $this->record_objs;