Refactor caption_field

This commit is contained in:
Romain Neutron
2012-01-18 14:20:05 +01:00
parent 98c8e867f0
commit c6ea536ab6

View File

@@ -87,7 +87,7 @@ class Edit extends RecordHelper
if ($this->is_single_grouping()) if ($this->is_single_grouping())
{ {
$record = array_pop($this->selection->get_elements()); $record = array_pop($this->selection->get_elements());
$children = $record->get_children(); $children = $record->get_children();
foreach ($children as $child) foreach ($children as $child)
{ {
@@ -100,9 +100,9 @@ class Edit extends RecordHelper
if ($this->is_possible()) if ($this->is_possible())
{ {
$this->generate_javascript_fields() $this->generate_javascript_fields()
->generate_javascript_sugg_values() ->generate_javascript_sugg_values()
->generate_javascript_status() ->generate_javascript_status()
->generate_javascript_elements(); ->generate_javascript_elements();
} }
return $this; return $this;
@@ -203,12 +203,12 @@ class Edit extends RecordHelper
foreach ($this->selection as $record) foreach ($this->selection as $record)
{ {
$indice = $record->get_number(); $indice = $record->get_number();
$_lst[$indice] = array( $_lst[$indice] = array(
'bid' => $record->get_base_id(), 'bid' => $record->get_base_id(),
'rid' => $record->get_record_id(), 'rid' => $record->get_record_id(),
'sselcont_id' => null, 'sselcont_id' => null,
'_selected' => false '_selected' => false
); );
$_lst[$indice]['statbits'] = array(); $_lst[$indice]['statbits'] = array();
@@ -216,12 +216,12 @@ class Edit extends RecordHelper
{ {
foreach ($this->javascript_status as $n => $s) foreach ($this->javascript_status as $n => $s)
{ {
$tmp_val = substr(strrev($record->get_status()), $n, 1); $tmp_val = substr(strrev($record->get_status()), $n, 1);
$_lst[$indice]['statbits'][$n]['value'] = ($tmp_val == '1') ? '1' : '0'; $_lst[$indice]['statbits'][$n]['value'] = ($tmp_val == '1') ? '1' : '0';
$_lst[$indice]['statbits'][$n]['dirty'] = false; $_lst[$indice]['statbits'][$n]['dirty'] = false;
} }
} }
$_lst[$indice]['fields'] = array(); $_lst[$indice]['fields'] = array();
$_lst[$indice]['originalname'] = ''; $_lst[$indice]['originalname'] = '';
$_lst[$indice]['originalname'] = $record->get_original_name(); $_lst[$indice]['originalname'] = $record->get_original_name();
@@ -234,23 +234,32 @@ class Edit extends RecordHelper
continue; continue;
} }
$values = array();
foreach ($field->get_values() as $value)
{
$values[$value->getId()] = array(
'meta_id' => $value->getId(),
'value' => $value->getValue()
);
}
$_lst[$indice]['fields'][$meta_struct_id] = array( $_lst[$indice]['fields'][$meta_struct_id] = array(
'dirty' => false, 'dirty' => false,
'meta_id' => $field->get_meta_id(), // 'meta_id' => $field->get_meta_id(),
'meta_struct_id' => $meta_struct_id, 'meta_struct_id' => $meta_struct_id,
'value' => $field->get_value() 'values' => $values
); );
} }
$_lst[$indice]['subdefs'] = array('thumbnail' => null, 'preview' => null); $_lst[$indice]['subdefs'] = array('thumbnail' => null, 'preview' => null);
$thumbnail = $record->get_thumbnail(); $thumbnail = $record->get_thumbnail();
$_lst[$indice]['subdefs']['thumbnail'] = array( $_lst[$indice]['subdefs']['thumbnail'] = array(
'url' => $thumbnail->get_url() 'url' => $thumbnail->get_url()
, 'w' => $thumbnail->get_width() , 'w' => $thumbnail->get_width()
, 'h' => $thumbnail->get_height() , 'h' => $thumbnail->get_height()
); );
$_lst[$indice]['preview'] = $twig->render('common/preview.html', array('record' => $record)); $_lst[$indice]['preview'] = $twig->render('common/preview.html', array('record' => $record));
@@ -283,9 +292,9 @@ class Edit extends RecordHelper
foreach ($this->selection as $record) foreach ($this->selection as $record)
{ {
/* @var $record record_adapter */ /* @var $record record_adapter */
$base_id = $record->get_base_id(); $base_id = $record->get_base_id();
$record_id = $record->get_record_id(); $record_id = $record->get_record_id();
$databox = $record->get_databox(); $databox = $record->get_databox();
if (isset($done[$base_id])) if (isset($done[$base_id]))
continue; continue;
@@ -313,12 +322,12 @@ class Edit extends RecordHelper
foreach ($vi->value as $oneValue) // les valeurs sug foreach ($vi->value as $oneValue) // les valeurs sug
{ {
$T_sgval['b' . $base_id][$field->get_id()][] = $T_sgval['b' . $base_id][$field->get_id()][] =
(string) $oneValue; (string) $oneValue;
} }
} }
} }
unset($collection); unset($collection);
$done[$base_id] = true; $done[$base_id] = true;
} }
$this->javascript_sugg_values = $T_sgval; $this->javascript_sugg_values = $T_sgval;
@@ -343,11 +352,11 @@ class Edit extends RecordHelper
foreach ($status[$this->get_sbas_id()] as $n => $statbit) foreach ($status[$this->get_sbas_id()] as $n => $statbit)
{ {
$_tstatbits[$n] = array(); $_tstatbits[$n] = array();
$_tstatbits[$n]['label0'] = $statbit['labeloff']; $_tstatbits[$n]['label0'] = $statbit['labeloff'];
$_tstatbits[$n]['label1'] = $statbit['labelon']; $_tstatbits[$n]['label1'] = $statbit['labelon'];
$_tstatbits[$n]['img_off'] = $statbit['img_off']; $_tstatbits[$n]['img_off'] = $statbit['img_off'];
$_tstatbits[$n]['img_on'] = $statbit['img_on']; $_tstatbits[$n]['img_on'] = $statbit['img_on'];
$_tstatbits[$n]['_value'] = 0; $_tstatbits[$n]['_value'] = 0;
} }
} }
} }
@@ -364,11 +373,11 @@ class Edit extends RecordHelper
*/ */
protected function generate_javascript_fields() protected function generate_javascript_fields()
{ {
$_tfields = $fields = array(); $_tfields = $fields = array();
$this->has_thesaurus = false; $this->has_thesaurus = false;
$databox = \databox::get_instance($this->get_sbas_id()); $databox = \databox::get_instance($this->get_sbas_id());
$meta_struct = $databox->get_meta_structure(); $meta_struct = $databox->get_meta_structure();
foreach ($meta_struct as $meta) foreach ($meta_struct as $meta)
@@ -389,19 +398,19 @@ class Edit extends RecordHelper
switch ($meta->get_type()) switch ($meta->get_type())
{ {
case 'datetime': case 'datetime':
$format = _('phraseanet::technique::datetime-edit-format'); $format = _('phraseanet::technique::datetime-edit-format');
$explain = _('phraseanet::technique::datetime-edit-explain'); $explain = _('phraseanet::technique::datetime-edit-explain');
break; break;
case 'date': case 'date':
$format = _('phraseanet::technique::date-edit-format'); $format = _('phraseanet::technique::date-edit-format');
$explain = _('phraseanet::technique::date-edit-explain'); $explain = _('phraseanet::technique::date-edit-explain');
break; break;
case 'time': case 'time':
$format = _('phraseanet::technique::time-edit-format'); $format = _('phraseanet::technique::time-edit-format');
$explain = _('phraseanet::technique::time-edit-explain'); $explain = _('phraseanet::technique::time-edit-explain');
break; break;
default: default:
$format = $explain = ""; $format = $explain = "";
break; break;
} }
@@ -411,22 +420,22 @@ class Edit extends RecordHelper
$separator = $meta->get_separator(); $separator = $meta->get_separator();
$datas = array( $datas = array(
'meta_struct_id' => $meta->get_id() 'meta_struct_id' => $meta->get_id()
, 'name' => $meta->get_name() , 'name' => $meta->get_name()
, '_status' => 0 , '_status' => 0
, '_value' => '' , '_value' => ''
, '_sgval' => array() , '_sgval' => array()
, 'required' => $meta->is_required() , 'required' => $meta->is_required()
, 'readonly' => $meta->is_readonly() , 'readonly' => $meta->is_readonly()
, 'type' => $meta->get_type() , 'type' => $meta->get_type()
, 'format' => $format , 'format' => $format
, 'explain' => $explain , 'explain' => $explain
, 'tbranch' => $meta->get_tbranch() , 'tbranch' => $meta->get_tbranch()
, 'maxLength' => $meta->get_source()->maxlength() , 'maxLength' => $meta->get_source()->maxlength()
, 'minLength' => $meta->get_source()->minLength() , 'minLength' => $meta->get_source()->minLength()
, 'regfield' => $regfield , 'regfield' => $regfield
, 'multi' => $meta->is_multi() , 'multi' => $meta->is_multi()
, 'separator' => $separator , 'separator' => $separator
); );
if (trim($meta->get_tbranch()) !== '') if (trim($meta->get_tbranch()) !== '')
@@ -448,7 +457,7 @@ class Edit extends RecordHelper
{ {
try try
{ {
$reg_record = $this->get_grouping_head(); $reg_record = $this->get_grouping_head();
$reg_sbas_id = $reg_record->get_sbas_id(); $reg_sbas_id = $reg_record->get_sbas_id();
$newsubdef_reg = new record_adapter($reg_sbas_id, $request->get('newrepresent')); $newsubdef_reg = new record_adapter($reg_sbas_id, $request->get('newrepresent'));
@@ -458,7 +467,7 @@ class Edit extends RecordHelper
foreach ($newsubdef_reg->get_subdefs() as $name => $value) foreach ($newsubdef_reg->get_subdefs() as $name => $value)
{ {
$pathfile = $value->get_pathfile(); $pathfile = $value->get_pathfile();
$system_file = new system_file($pathfile); $system_file = new system_file($pathfile);
$reg_record->substitute_subdef($name, $system_file); $reg_record->substitute_subdef($name, $system_file);
} }
@@ -472,11 +481,11 @@ class Edit extends RecordHelper
if (!is_array($request->get('mds'))) if (!is_array($request->get('mds')))
return $this; return $this;
$sbas_id = (int) $request->get('sbid'); $sbas_id = (int) $request->get('sbid');
$databox = \databox::get_instance($sbas_id); $databox = \databox::get_instance($sbas_id);
$meta_struct = $databox->get_meta_structure(); $meta_struct = $databox->get_meta_structure();
$write_edit_el = false; $write_edit_el = false;
$date_obj = new DateTime(); $date_obj = new DateTime();
foreach ($meta_struct->get_elements() as $meta_struct_el) foreach ($meta_struct->get_elements() as $meta_struct_el)
{ {
if ($meta_struct_el->get_metadata_namespace() == "PHRASEANET" && $meta_struct_el->get_metadata_tagname() == 'tf-editdate') if ($meta_struct_el->get_metadata_namespace() == "PHRASEANET" && $meta_struct_el->get_metadata_tagname() == 'tf-editdate')
@@ -502,7 +511,7 @@ class Edit extends RecordHelper
if (!array_key_exists($key, $elements)) if (!array_key_exists($key, $elements))
continue; continue;
$statbits = $rec['status']; $statbits = $rec['status'];
$editDirty = $rec['edit']; $editDirty = $rec['edit'];
if ($editDirty == '0') if ($editDirty == '0')
@@ -515,28 +524,38 @@ class Edit extends RecordHelper
$record->set_metadatas($rec['metadatas']); $record->set_metadatas($rec['metadatas']);
} }
if ($write_edit_el instanceof \Acmedatabox_field) /**
*todo : this should not work
*/
if ($write_edit_el instanceof \databox_field)
{ {
$fields = $record->get_caption()->get_fields(array($write_edit_el->get_name())); $fields = $record->get_caption()->get_fields(array($write_edit_el->get_name()));
$field = array_pop($fields); $field = array_pop($fields);
$meta_id = null;
if($field && !$field->is_multi())
{
$meta_id = array_pop($field->get_values())->getId();
}
$metas = array( $metas = array(
array( array(
'meta_struct_id' => $write_edit_el->get_id() 'meta_struct_id' => $write_edit_el->get_id()
, 'meta_id' => ($field ? $field->get_meta_id() : null) , 'meta_id' => $meta_id
, 'value' => array($date_obj->format('Y-m-d h:i:s')) , 'value' => array($date_obj->format('Y-m-d h:i:s'))
) )
); );
$record->set_metadatas($metas); $record->set_metadatas($metas);
} }
$newstat = $record->get_status(); $newstat = $record->get_status();
$statbits = ltrim($statbits, 'x'); $statbits = ltrim($statbits, 'x');
if (!in_array($statbits, array('', 'null'))) if (!in_array($statbits, array('', 'null')))
{ {
$mask_and = ltrim(str_replace( $mask_and = ltrim(str_replace(
array('x', '0', '1', 'z'), array('1', 'z', '0', '1'), $statbits), '0'); array('x', '0', '1', 'z'), array('1', 'z', '0', '1'), $statbits), '0');
if ($mask_and != '') if ($mask_and != '')
$newstat = \databox_status::operation_and_not($newstat, $mask_and); $newstat = \databox_status::operation_and_not($newstat, $mask_and);
@@ -553,14 +572,14 @@ class Edit extends RecordHelper
if ($statbits != '') if ($statbits != '')
{ {
$appbox->get_session() $appbox->get_session()
->get_logger($record->get_databox()) ->get_logger($record->get_databox())
->log($record, Session_Logger::EVENT_STATUS, '', ''); ->log($record, Session_Logger::EVENT_STATUS, '', '');
} }
if ($editDirty) if ($editDirty)
{ {
$appbox->get_session() $appbox->get_session()
->get_logger($record->get_databox()) ->get_logger($record->get_databox())
->log($record, Session_Logger::EVENT_EDIT, '', ''); ->log($record, Session_Logger::EVENT_EDIT, '', '');
} }
} }