Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
metadata_field_multiple_text_edit_fns.inc
1 <?php
18 require_once dirname(__FILE__).'/../../metadata_field/metadata_field_edit_fns.inc';
19 
32 {
33 
34 
39  function __construct()
40  {
41  parent::__construct();
42 
43  }//end constructor
44 
45 
62  public function paintValueInterface(Metadata_Field_Multiple_Text $asset, Backend_Outputter $o, $value_str, $write_access, $enable_default=TRUE, $print_cascade_values_option = TRUE)
63  {
64  $prefix = $asset->getPrefix();
65  require_once SQ_LIB_PATH.'/html_form/html_form.inc';
66 
67  $value = '';
68  $value_components = $asset->attr('value_components');
69 
70  Metadata_Field::decodeValueString($value_str, $value, $value_components);
71 
72  if ($enable_default) {
73  $o->addJsInclude(sq_web_path('data').'/asset_types/metadata_field_multiple_text/js/metadata_field_multiple_text.js');
74  $is_default = FALSE;
75  if (is_null($value_str)) {
76  $value_str = $asset->getDefaultValue();
77  Metadata_Field::decodeValueString($value_str, $value, $value_components);
78  $is_default = TRUE;
79  }
80  }
81 
82  // if there is no value we need a blank array...not an array with one element (a blank string)
83  if ($value == '') {
84  $value = Array();
85  } else {
86  $value = explode('; ', $value);
87  }
88 
89  $attribute = $asset->getOptionListAttribute();
90  $attribute->value = implode($attribute->delimiter, $value);
91 
92  // If we're OK to edit, get our attribute, and paint it
93  if ($write_access) {
94  if ($enable_default) {
95  echo '<span id="'.$prefix.'_field">';
96  }
97  $attribute->paint($prefix, FALSE);
98  if ($enable_default) echo '</span>';
99  } else {
100  $attribute->paint($prefix, TRUE);
101  }
102 
103  if ($enable_default) {
104  if ($write_access) {
105  echo ' &nbsp; &nbsp; &nbsp; ';
106 
107  // Work out which options we have to set if we have to
108  $i = 0;
109  $default_keys = explode('; ', $asset->attr('default'));
110  $default_vals_expr = '[\''.implode('\', \'', $default_keys).'\']';
111  check_box($prefix.'_default', '1', $is_default, "handleDefaultClickMT(this, '$prefix', $default_vals_expr); ");
112  label(translate('use_default'), $prefix.'_default');
113  if ($is_default) {
114  ?>
115  <script type="text/javascript"><!--
116  setInputsEnabled(document.getElementById('<?php echo $prefix ?>_field'), false);
117  // --></script>
118  <?php
119  }
120  } else {
121  if ($is_default) {
122  echo ' <em style="color: #666">('.strtolower(translate('default')).')</em>';
123  }
124  }
125  }
126 
127  if ($write_access && $print_cascade_values_option) {
128  echo '&nbsp;&nbsp;&nbsp;&nbsp;';
129  check_box($prefix.'_cascade_value', '1', FALSE);
130  label(translate('cascade_value'), $prefix.'_cascade_value');
131  }
132 
133  return $write_access;
134 
135  }//end paintValueInterface()
136 
137 
149  public function processInlineValueInterface(Metadata_Field_Multiple_Text $asset, &$new_value_str, &$field_cascade_value)
150  {
151  // nothing for us to do
152  if (!$asset->attr('editable')) return FALSE;
153 
154  $processed = FALSE;
155 
156  $prefix = $asset->getPrefix();
157  if (!empty($_POST[$prefix.'_default'])) {
158  // use default
159  $new_value_str = NULL;
160  $processed = TRUE;
161  } else {
162  // not default
163  $attribute = $asset->getOptionListAttribute();
164  $attribute->process($prefix);
165  if ($attribute->processed) {
166  // Get the string into proper form for the metadata field function
167  $value = str_replace($attribute->delimiter, '; ', $attribute->value);
168  $keyword = '%asset_metadata_'.$asset->name.'%';
169  $value = trim(str_replace($keyword, '', $value));
170  $new_value_str = Metadata_Field::encodeValueString(trim($value), Array());
171 
172  if(!SQ_IN_BACKEND && !SQ_IN_LIMBO && !SQ_IN_LOGIN && !SQ_IN_CRON && !SQ_PHP_CLI) {
173  $filter_enabled = $GLOBALS['SQ_SYSTEM']->getUserPrefs('user', 'SQ_USER_FILTER_FRONT_END_INPUT');
174  if(isset($GLOBALS['SQ_REVERT_TO_SYSTEM_VERSION'] ) && $GLOBALS['SQ_REVERT_TO_SYSTEM_VERSION']) {
175  $filter_enabled = FALSE;
176  } else if (isset($GLOBALS['SQ_CLONE_COMPONENTS'] ) && $GLOBALS['SQ_CLONE_COMPONENTS']) {
177  $filter_enabled = FALSE;
178  }
179 
180  if ($filter_enabled && !empty($new_value_str)) {
181  $new_value_str = filter_content($new_value_str);
182  if ($new_value_str === FALSE){
183  trigger_localised_error('SYS0347', E_USER_WARNING, $asset->name, $asset->type());
184  return FALSE;
185  }
186  }
187  }
188  $processed = TRUE;
189  }
190  }
191 
192  if (isset($_POST[$prefix.'_cascade_value'])) {
193  $field_cascade_value = TRUE;
194  $processed = TRUE;
195  }
196 
197  return $processed;
198 
199  }//end processInlineValueInterface()
200 
201 
214  public function generateMetadata(Metadata_Field_Multiple_Text $asset, $value_str, &$tag_value, Array &$keywords)
215  {
216  if (is_null($value_str)) {
217  $value_str = $asset->attr('default');
218  }
219 
220  return parent::generateMetadata($asset, $value_str, $tag_value, $keywords);
221 
222  }//end generateMetadata()
223 
224 
235  public function paintDefault(Metadata_Field_Multiple_Text $asset, Backend_Outputter $o, $prefix)
236  {
237  $write_access = $asset->writeAccess('attributes');
238 
239  $attribute = $asset->getOptionListAttribute();
240  $attribute->paint($prefix, !$write_access);
241 
242  return $write_access;
243 
244  }//end paintDefault()
245 
246 
257  public function processDefault(Metadata_Field_Multiple_Text $asset, Backend_Outputter $o, $prefix)
258  {
259  if (!$asset->writeAccess('attributes')) return FALSE;
260 
261  $is_contextable = (boolean)$asset->attr('is_contextable');
262  $contextid = $GLOBALS['SQ_SYSTEM']->getContextId();
263 
264  // change to default asset if we have to
265  if ($is_contextable === FALSE) {
266  if ($contextid !== 0) {
267  $GLOBALS['SQ_SYSTEM']->changeContext(0);
268  $asset = $GLOBALS['SQ_SYSTEM']->am->getAsset($asset->id);
269  }
270  }
271 
272  $attribute = $asset->getOptionListAttribute();
273  $attribute->process($prefix);
274 
275  if ($attribute->processed) {
276  $value = $attribute->value;
277  $value_array = explode($attribute->delimiter, $value);
278  $asset->setAttrValue('default', implode('; ', $value_array));
279  $asset->saveAttributes();
280  }
281 
282  // restore previous assets
283  if ($is_contextable === FALSE) {
284  if ($contextid !== 0) {
285  $GLOBALS['SQ_SYSTEM']->restoreContext();
286  $asset = $GLOBALS['SQ_SYSTEM']->am->getAsset($asset->id);
287  }
288  }
289 
290  // No need to save attributes in THIS context
291  return FALSE;
292 
293  }//end processDefault()
294 
295 
296 }//end class
297 
298 ?>