Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
metadata_field_related_asset_edit_fns.inc
1 <?php
17 require_once dirname(__FILE__).'/../../metadata_field/metadata_field_edit_fns.inc';
18 require_once SQ_LIB_PATH.'/html_form/html_form.inc';
19 
29 {
30 
31 
36  function __construct()
37  {
38  parent::__construct();
39 
40  }//end constructor
41 
42 
59  public function paintValueInterface(Metadata_Field_Related_Asset $asset, Backend_Outputter $o, $value_str, $write_access, $enable_default=TRUE, $print_cascade_values_option = TRUE)
60  {
61  $prefix = $asset->getPrefix();
62 
63  $is_default = FALSE;
64  $default_value = trim($asset->getDefaultValue());
65  if (is_null($value_str)) {
66  $is_default = TRUE;
67  $value_str = $default_value;
68  }
69  $value_str = trim($value_str);
70 
71  if ($write_access) {
72  $ra_styles = ($is_default && $enable_default) ? 'display:none' : 'display:block';
73  echo '<div id="'.$prefix.'_ra_container'.'" style="float:left; '.$ra_styles.'">';
74  asset_finder($prefix.'_value', $value_str);
75  echo '</div>';
76 
77  $default_ra_styles = !($is_default && $enable_default) ? 'display:none' : 'display:block';
78  echo '<div id="'.$prefix.'_default_ra_container'.'" style="float:left; '.$default_ra_styles.'">';
79  echo !$default_value ? 'No default asset!' : get_asset_tag_line($default_value);
80  echo '</div>';
81 
82  if ($enable_default) {
83  echo ' &nbsp; &nbsp; &nbsp; ';
84  $default_string = str_replace("'", "\'", $asset->attr('default'));
85  // get rid of javascript error 'unterminated string literal'. (bug 2386)
86  $default_string = str_replace(Array("\r\n", "\r", "\n"), '\n', $default_string);
87 
88  $checkbox_extra = 'with(this.form.elements[\''.$prefix.'_value\']) { disabled = this.checked; if (this.checked) { value = \''.$default_string.'\'; } else {if(value==\'\') {value=\' \'; value = \'\';}}};';
89 
90  check_box($prefix.'_default', '1', $is_default, 'handleMetadataRelatedAssetDefaultClickFor'.$prefix.'()');
91  label(translate('use_default'), $prefix.'_default');
92  }
93 
94  if ($print_cascade_values_option) {
95  echo '&nbsp;&nbsp;&nbsp;&nbsp;';
96  check_box($prefix.'_cascade_value', '1', FALSE);
97  label(translate('cascade_value'), $prefix.'_cascade_value');
98  }
99 
100  ?>
101  <script type="text/javascript"><!--
102  //<![CDATA[
103  function handleMetadataRelatedAssetDefaultClickFor<?php echo $prefix; ?>() {
104  var ra_div = document.getElementById('<?php echo $prefix.'_ra_container'; ?>');
105  var default_ra_div = document.getElementById('<?php echo $prefix.'_default_ra_container'; ?>');
106 
107  if (ra_div.style.display == 'block') {
108  ra_div.style.display = 'none';
109  default_ra_div.style.display = 'block';
110  } else {
111  ra_div.style.display = 'block';
112  default_ra_div.style.display = 'none';
113  }
114  }
115  // ]]> -->
116  </script>
117  <?php
118 
119  } else {
120  echo !$value_str ? translate('no_asset_selected') : get_asset_tag_line($value_str);
121  if ($is_default) {
122  echo ' <em style="color: #666">('.strtolower(translate('default')).')</em>';
123  }
124  }
125 
126  return $write_access;
127 
128  }//end paintValueInterface()
129 
130 
141  public function processInlineValueInterface(Metadata_Field_Related_Asset $asset, &$new_value_str, &$field_cascade_value)
142  {
143  if (!$asset->attr('editable')) return FALSE; // nothing for us to do
144 
145  $processed = FALSE;
146 
147  $prefix = $asset->getPrefix();
148  if (!empty($_POST[$prefix.'_default'])) {
149  // use default
150  $new_value_str = NULL;
151  $processed = TRUE;
152  } else {
153  $value = trim(array_get_index($_POST, 'sq_asset_finder_'.$prefix.'_value_assetid', ''));
154  if ($value && !$GLOBALS['SQ_SYSTEM']->am->getAssetInfo(Array($value))) {
155  trigger_localised_error('SYS0087', E_USER_WARNING, $value);
156  return FALSE;
157  }
158  $new_value_str = $value;
159  $processed = TRUE;
160  }
161 
162  if (isset($_POST[$prefix.'_cascade_value'])) {
163  $field_cascade_value = TRUE;
164  $processed = TRUE;
165  }
166 
167  return $processed;
168 
169  }//end processInlineValueInterface()
170 
171 
182  public function paintDefault(Metadata_Field_Related_Asset $asset, Backend_Outputter $o, $prefix)
183  {
184  $write_access = $asset->writeAccess('attributes');
185 
186 
187  if ((boolean)$asset->attr('is_contextable') === TRUE) {
188  $value = $asset->attr('default');
189  } else {
190  $value = $GLOBALS['SQ_SYSTEM']->am->getAttributeValuesByName('default', 'metadata_field', Array($asset->id), 0);
191  $value = array_get_index($value, $asset->id, '');
192  }
193 
194  if (!$write_access) {
195  if (!$value) {
196  echo translate('no_asset_selected');
197  } else {
198  echo get_asset_tag_line($value);
199  }
200  } else {
201  asset_finder($prefix.'_default', $value);
202  }
203 
204  return TRUE;
205 
206  }//end paintDefault()
207 
208 
219  public function processDefault(Metadata_Field_Related_Asset $asset, Backend_Outputter $o, $prefix)
220  {
221  if ($asset->writeAccess('attributes') === FALSE) {
222  return FALSE;
223  }
224  $new_value = trim(array_get_index($_POST, 'sq_asset_finder_'.$prefix.'_default_assetid', ''));
225 
226  $is_contextable = (boolean)$asset->attr('is_contextable');
227  if ($is_contextable === TRUE) {
228  $value = $asset->attr('default');
229  } else {
230  $value = $GLOBALS['SQ_SYSTEM']->am->getAttributeValuesByName('default', 'metadata_field', Array($asset->id), 0);
231  $value = array_get_index($value, $asset->id, '');
232  }
233 
234  $save_value = FALSE;
235  if ($new_value != $value) {
236  if ($new_value && !$GLOBALS['SQ_SYSTEM']->am->getAssetInfo(Array($new_value))) {
237  trigger_localised_error('SYS0087', E_USER_WARNING, $new_value);
238  return FALSE;
239  }
240  $save_value = TRUE;
241  if ($is_contextable === TRUE) {
242  // If the metadata value is contextable, just use the contextable default
243  $asset->setAttrValue('default', $new_value);
244  $save_value = TRUE;
245  } else {
246  // Not contextable; in this case the default value authority goes to the default context
247  $GLOBALS['SQ_SYSTEM']->changeContext(0);
248 
249  $default_asset = $GLOBALS['SQ_SYSTEM']->am->getAsset($asset->id);
250  $default_asset->setAttrValue('default', $new_value);
251  $default_asset->saveAttributes();
252  $GLOBALS['SQ_SYSTEM']->am->forgetAsset($default_asset);
253  unset($default_asset);
254 
255  $GLOBALS['SQ_SYSTEM']->restoreContext();
256 
257  // No need to save attributes in THIS context.
258  $save_value = FALSE;
259  }
260  }
261 
262  return $save_value;
263 
264  }//end processDefault()
265 
266 
267 }//end class
268 ?>