Skip to content

Commit

Permalink
Fixed advanced meta data presentation
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.ilias.de/svn/ilias/trunk@14848 21b2c9ec-7c21-0410-8b45-9bfb8ed2bfc5
  • Loading branch information
smeyer-ilias committed Sep 25, 2007
1 parent 9618828 commit 8a4ce0c
Show file tree
Hide file tree
Showing 11 changed files with 220 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,33 @@ public static function _getDefinitionsByRecordId($a_record_id)
return $defs ? $defs : array();
}

/**
* get active definitions by obj type
*
* @access public
* @static
*
* @param string obj_type
*/
public static function _getActiveDefinitionsByObjType($a_type)
{
global $ilDB;

$query = "SELECT field_id FROM adv_md_record_objs AS aro ".
"JOIN adv_md_record AS amr ON aro.record_id = amr.record_id ".
"JOIN adv_md_field_definition AS amf ON aro.record_id = amf.record_id ".
"WHERE active = 1 ".
"AND obj_type = ".$ilDB->quote($a_type)." ".
"ORDER BY aro.record_id,position ";
$res = $ilDB->query($query);
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
$field_ids[] = $row->field_id;
}
return $field_ids ? $field_ids : array();
}


/**
* Delete all fields by record_id
*
Expand Down
26 changes: 26 additions & 0 deletions Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,33 @@ public static function _lookupRecordIdByImportId($a_ilias_id)
*/
public static function _getAssignableObjectTypes()
{
return array('crs');
return array('crs','rcrs');
}

/**
* get activate obj types
*
* @access public
* @static
*
* @param string obj types
*/
public static function _getActivatedObjTypes()
{
global $ilDB;

$query = "SELECT DISTINCT(obj_type) FROM adv_md_record_objs AS amo ".
"JOIN adv_md_record AS amr ON amo.record_id = amr.record_id ".
"WHERE active = 1 ";
$res = $ilDB->query($query);
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
$obj_types[] = $row->obj_type;
}
return $obj_types ? $obj_types : array();
}

/**
* Get records
*
Expand Down Expand Up @@ -186,6 +210,8 @@ public static function _getActivatedRecordsByObjectType($a_obj_type)
return $records;
}



/**
* Delete record and all related data
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,26 @@ public function showRecords()
*/
public function updateSubstitutions()
{

foreach(ilAdvancedMDRecord::_getActivatedObjTypes() as $obj_type)
{
include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDSubstitution.php');
$sub = ilAdvancedMDSubstitution::_getInstanceByObjectType($obj_type);
$sub->setSubstitutions(array());
$sub->enableDescription($_POST['enabled_desc_'.$obj_type]);
asort($_POST['position'][$obj_type],SORT_NUMERIC);
foreach($_POST['position'][$obj_type] as $field_id => $pos)
{
if(isset($_POST['show'][$obj_type][$field_id]) and $_POST['show'][$obj_type][$field_id])
{
$sub->appendSubstitution($field_id);
}
}
$sub->update();
}


/*
foreach(ilAdvancedMDRecord::_getAllRecordsByObjectType() as $obj_type => $visible_record)
{
include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDSubstitution.php');
Expand All @@ -132,6 +152,7 @@ public function updateSubstitutions()
$sub->enableDescription($_POST['enabled_desc_'.$obj_type]);
$sub->update();
}
*/
ilUtil::sendInfo($this->lng->txt('settings_saved'));
$this->showRecords();
return true;
Expand Down Expand Up @@ -942,15 +963,39 @@ protected function initFormSubstitutions()
$check->setChecked($sub->isDescriptionEnabled() ? true : false);
$this->form->addItem($check);

$area = new ilTextAreaInputGUI($this->lng->txt('md_adv_substitution'),'substitution_'.$obj_type);
$area->setUseRte(true);
$area->setRteTagSet('standard');
$area->setValue(ilUtil::prepareFormOutput($sub->getSubstitutionString()));
$area->setRows(5);
$area->setCols(80);
$this->form->addItem($area);
#$area = new ilTextAreaInputGUI($this->lng->txt('md_adv_substitution'),'substitution_'.$obj_type);
#$area->setUseRte(true);
#$area->setRteTagSet('standard');
#$area->setValue(ilUtil::prepareFormOutput($sub->getSubstitutionString()));
#$area->setRows(5);
#$area->setCols(80);
#$this->form->addItem($area);

$definitions = ilAdvancedMDFieldDefinition::_getActiveDefinitionsByObjType($obj_type);
$definitions = $sub->sortDefinitions($definitions);

$counter = 1;
foreach($definitions as $definition_id)
{
$def = ilAdvancedMDFieldDefinition::_getInstanceByFieldId($definition_id);

$check = new ilCheckboxInputGUI($def->getTitle(),'show['.$obj_type.']['.$definition_id.']');
$check->setValue(1);
$check->setOptionTitle($this->lng->txt('md_adv_show'));
$check->setChecked($sub->isSubstituted($definition_id));

$pos = new ilTextInputGUI($this->lng->txt('position').':','position['.$obj_type.']['.$definition_id.']');
$pos->setSize(3);
$pos->setMaxLength(4);
$pos->setValue(sprintf('%.1f',$counter++));
$check->addSubItem($pos);

$this->form->addItem($check);
}


// placeholder
/*
$custom = new ilCustomInputGUI($this->lng->txt('md_adv_placeholders'));
$tpl = new ilTemplate('tpl.placeholder_info.html',true,true,'Services/AdvancedMetaData');
foreach($records as $record)
Expand All @@ -971,6 +1016,7 @@ protected function initFormSubstitutions()
}
$custom->setHTML($tpl->get());
$this->form->addItem($custom);
*/
}
$this->form->setTitle($this->lng->txt('md_adv_substitution_table'));
$this->form->addCommandButton('updateSubstitutions',$this->lng->txt('save'));
Expand Down
105 changes: 93 additions & 12 deletions Services/AdvancedMetaData/classes/class.ilAdvancedMDSubstitution.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ilAdvancedMDSubstitution
protected $db;

protected $type;
protected $substitution;
protected $substitutions;
protected $enabled_desc = true;
protected $active = false;
protected $date_fields = array();
Expand Down Expand Up @@ -76,6 +76,25 @@ public static function _getInstanceByObjectType($a_type)
return self::$instances[$a_type] = new ilAdvancedMDSubstitution($a_type);
}

/**
* Sort definitions
*
* @access public
* @param array int field_id
*
*/
public function sortDefinitions($a_definitions)
{
$sorted = array();
foreach($this->substitutions as $field_id)
{
$sorted[] = $field_id;
$key = array_search($field_id,$a_definitions);
unset($a_definitions[$key]);
}
return array_merge($sorted,$a_definitions);
}

/**
* Is substitution active
*
Expand Down Expand Up @@ -119,8 +138,44 @@ public function enableDescription($a_status)
* @param string description
*
*/
public function substitute($a_ref_id,$a_obj_id)
public function getParsedSubstitutions($a_ref_id,$a_obj_id)
{
if(!count($this->getSubstitutions()))
{
return array();
}

include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php');
$values = ilAdvancedMDValues::_getValuesByObjId($a_obj_id);

foreach($this->getSubstitutions() as $field_id)
{
if(!isset($values[$field_id]) or !$values[$field_id])
{
continue;
}
if(!isset($this->active_fields[$field_id]))
{
continue;
}
if(in_array($field_id,$this->date_fields))
{
$value = ilFormat::formatUnixTime((int) $values[$field_id]);
}
else
{
$value = $values[$field_id];
}

$data['name'] = $this->active_fields[$field_id];
$data['value'] = $value;


$substituted[] = $data;
}

return $substituted ? $substituted : array();
/*
$string = $this->getSubstitutionString();
include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php');
foreach(ilAdvancedMDValues::_getValuesByObjId($a_obj_id) as $field_id => $value)
Expand Down Expand Up @@ -149,6 +204,31 @@ public function substitute($a_ref_id,$a_obj_id)
// Delete all other blocks
$string = preg_replace('/\[IF_F_\d+\].*\[\/IF_F_\d+\]/U','',$string);
return $string;
*/
}

/**
* set substitutions
*
* @access public
* @param array array of field definitions
*
*/
public function setSubstitutions($a_field_ids)
{
$this->substitutions = $a_field_ids;
}

/**
* append field to substitutions
*
* @access public
* @param int field id
*
*/
public function appendSubstitution($a_field_id)
{
$this->substitutions[] = $a_field_id;
}

/**
Expand All @@ -158,21 +238,21 @@ public function substitute($a_ref_id,$a_obj_id)
* @param
*
*/
public function getSubstitutionString()
public function getSubstitutions()
{
return $this->substitution;
return $this->substitutions ? $this->substitutions : array();
}

/**
* Set substitution
* is substituted
*
* @access public
* @param string substitution
* @param int field_id
*
*/
public function setSubstitutionString($a_substitution)
public function isSubstituted($a_field_id)
{
$this->substitution = $a_substitution;
return in_array($a_field_id,$this->getSubstitutions());
}

/**
Expand All @@ -185,7 +265,7 @@ public function update()
{
$query = "REPLACE INTO adv_md_substitutions ".
"SET obj_type = ".$this->db->quote($this->type).", ".
"substitution = ".$this->db->quote($this->getSubstitutionString()).", ".
"substitution = ".$this->db->quote(serialize($this->getSubstitutions())).", ".
"hide_description = ".$this->db->quote(!$this->isDescriptionEnabled());

$res = $this->db->query($query);
Expand All @@ -203,7 +283,7 @@ private function read()
$this->date_fields = ilAdvancedMDFieldDefinition::_lookupDateFields();

// Check active status
$query = "SELECT active,field_id FROM adv_md_record AS amr ".
$query = "SELECT active,field_id,amfd.title FROM adv_md_record AS amr ".
"JOIN adv_md_record_objs AS amro ON amr.record_id = amro.record_id ".
"JOIN adv_md_field_definition AS amfd ON amr.record_id = amfd.record_id ".
"WHERE active = 1 ".
Expand All @@ -212,15 +292,16 @@ private function read()
$this->active = $res->numRows() ? true : false;
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
$this->active_fields[] = $row->field_id;
$this->active_fields[$row->field_id] = $row->title;
}

$query = "SELECT * FROM adv_md_substitutions ".
"WHERE obj_type = ".$this->db->quote($this->type)." ";
$res = $this->db->query($query);
$this->substitutions = array();
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
$this->substitution = $row->substitution;
$this->substitutions = unserialize($row->substitution);
$this->enabled_desc = !$row->hide_description;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
{EDIT_RECORD_TABLE}
{EDIT_RECORD_TABLE}<br />
{FIELDS_TABLE}
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
{RECORD_TABLE}
{RECORD_TABLE}<br />
{SUBSTITUTION_TABLE}
11 changes: 8 additions & 3 deletions classes/class.ilObjectListGUI.php
Original file line number Diff line number Diff line change
Expand Up @@ -705,9 +705,14 @@ function insertTitle()
*/
public function insertSubstitutions()
{
$this->tpl->setCurrentBlock('item_adv_substitutions');
$this->tpl->setVariable('ITEM_SUBSTITUTIONS',$this->substitutions->substitute($this->ref_id,$this->obj_id));
$this->tpl->parseCurrentBlock();
foreach($this->substitutions->getParsedSubstitutions($this->ref_id,$this->obj_id) as $data)
{
$this->tpl->touchBlock("std_prop");
$this->tpl->setCurrentBlock('item_property');
$this->tpl->setVariable('TXT_PROP',$data['name']);
$this->tpl->setVariable('VAL_PROP',$data['value']);
$this->tpl->parseCurrentBlock();
}
}


Expand Down
5 changes: 4 additions & 1 deletion lang/ilias_de.lang
Original file line number Diff line number Diff line change
Expand Up @@ -7605,4 +7605,7 @@ meta#:#md_copyright_value#:#Copyright
meta#:#md_copyright_add#:#Neue Vorgabe
meta#:#md_delete_cp_sure#:#Möchten Sie wirklich die ausgewählten Vorgaben entfernen?
meta#:#md_copyrights_deleted#:#Die ausgewählten Vorgaben wurden entfernt.
meta#:#meta_cp_own#:#Eigene Angabe:
meta#:#meta_cp_own#:#Eigene Angabe:
meta#:#md_adv_desc_show#:#Beschreibung anzeigen
meta#:#md_adv_show#:#Anzeigen
common#:#udf_type_date#:#Datumsfeld
5 changes: 4 additions & 1 deletion lang/ilias_en.lang
Original file line number Diff line number Diff line change
Expand Up @@ -7645,4 +7645,7 @@ meta#:#md_copyright_value#:#Copyright
meta#:#md_copyright_add#:#Add Copyright Presetting
meta#:#md_delete_cp_sure#:#Do you really want to delete the following entries ?
meta#:#md_copyrights_deleted#:#Deleted Copyright
meta#:#meta_cp_own#:#Own Copyright Information:
meta#:#meta_cp_own#:#Own Copyright Information:
meta#:#md_adv_desc_show#:#Show Description
meta#:#md_adv_show#:#Show
common#:#udf_type_date#:#Date Field
Loading

0 comments on commit 8a4ce0c

Please sign in to comment.