Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
metadata_field_wysiwyg_edit_fns.inc
1 <?php
18 require_once dirname(__FILE__).'/../../metadata_field/metadata_field_edit_fns.inc';
19 require_once SQ_ATTRIBUTES_PATH.'/wysiwyg/wysiwyg.inc';
20 
33 {
34 
35 
40  function __construct()
41  {
42  parent::__construct();
43 
44  }//end constructor
45 
46 
64  public function paintValueInterface(Metadata_Field_WYSIWYG $asset, Backend_Outputter $o, $value_str, $write_access, $enable_default=TRUE, $print_cascade_values_option = TRUE, $type_code=NULL)
65  {
66  $prefix = $asset->getPrefix().'_'.$type_code;
67  $wysiwyg = $asset->getAttribute('wysiwyg');
68 
69  $value = '';
70  $value_components = $asset->attr('value_components');
71 
72  $is_default = FALSE;
73  if (is_null($value_str)) {
74  $value_str = $asset->attr('default_html');
75  $is_default = TRUE;
76  }
77 
78  Metadata_Field::decodeValueString($value_str, $value, $value_components);
79  $wysiwyg->value = $value;
80  $styles_common = '"float: left;';
81  $wysiwyg_container_styles = $is_default ? $styles_common.'display:none"' : $styles_common.'display:block"';
82  echo '<div id="'.$prefix.'_wysiwyg_container'.'" style='.$wysiwyg_container_styles.'>';
83  $wysiwyg->paint($prefix, !$write_access);
84  echo '</div>';
85  $default_html_container_styles = $is_default ? $styles_common.'display:block"' : $styles_common.'display:none"';
86  echo '<div id="'.$prefix.'_default_html_container'.'" style='.$default_html_container_styles.'>';
87  echo $asset->attr('default_html');
88  if (!$write_access) {
89  echo ' <em style="color: #666">('.strtolower(translate('default')).')</em>';
90  }
91  echo '</div>';
92 
93  if ($write_access) {
94  echo '<div style="float:left">';
95  echo '&nbsp;&nbsp;&nbsp;&nbsp;';
96  check_box($prefix.'_default', '1', $is_default, 'handleMetadataWYSIWYGDefaultClickFor'.$prefix.'()');
97  label(translate('use_default'), $prefix.'_default');
98 
99  if ($print_cascade_values_option) {
100  echo '&nbsp;&nbsp;&nbsp;&nbsp;';
101  check_box($prefix.'_cascade_value', '1', FALSE);
102  label(translate('cascade_value'), $prefix.'_cascade_value');
103  }
104  echo '</div>';
105  }
106  ?>
107  <script type="text/javascript"><!--
108  //<![CDATA[
109  function handleMetadataWYSIWYGDefaultClickFor<?php echo $prefix; ?>() {
110  var wysiwyg_container = document.getElementById('<?php echo $prefix.'_wysiwyg_container'; ?>');
111  var default_html_container = document.getElementById('<?php echo $prefix.'_default_html_container'; ?>');
112  if (wysiwyg_container.style.display == 'block') {
113  wysiwyg_container.style.display = 'none';
114  default_html_container.style.display = 'block';
115  } else {
116  wysiwyg_container.style.display = 'block';
117  default_html_container.style.display = 'none';
118  }
119  }
120  // ]]> -->
121  </script>
122  <?php
123 
124  return $write_access;
125 
126  }//end paintValueInterface()
127 
128 
140  public function processInlineValueInterface(Metadata_Field_WYSIWYG $asset, &$new_value_str, &$field_cascade_value, $type_code=NULL)
141  {
142  if (!$asset->attr('editable')) return FALSE; // nothing for us to do
143 
144  $processed = FALSE;
145  $prefix = $asset->getPrefix().'_'.$type_code;
146 
147  if (!empty($_POST[$prefix.'_default'])) {
148  // use default
149  $new_value_str = NULL;
150  $processed = TRUE;
151  } else {
152  // default is not checked, so process the attribute
153  $wysiwyg = $asset->getAttribute('wysiwyg');
154  $wysiwyg->process($prefix, NULL, FALSE);
155  if ($wysiwyg->processed) {
156  $new_value_str = Metadata_Field::encodeValueString(trim($wysiwyg->value), Array());
157 
158  if(!SQ_IN_BACKEND && !SQ_IN_LIMBO && !SQ_IN_LOGIN && !SQ_IN_CRON && !SQ_PHP_CLI) {
159  $filter_enabled = $GLOBALS['SQ_SYSTEM']->getUserPrefs('user', 'SQ_USER_FILTER_FRONT_END_INPUT');
160  if(isset($GLOBALS['SQ_REVERT_TO_SYSTEM_VERSION'] ) && $GLOBALS['SQ_REVERT_TO_SYSTEM_VERSION']) {
161  $filter_enabled = FALSE;
162  } else if (isset($GLOBALS['SQ_CLONE_COMPONENTS'] ) && $GLOBALS['SQ_CLONE_COMPONENTS']) {
163  $filter_enabled = FALSE;
164  }
165 
166  if ($filter_enabled && !empty($new_value_str)) {
167  $new_value_str = filter_content($new_value_str);
168  if ($new_value_str === FALSE){
169  trigger_localised_error('SYS0347', E_USER_WARNING, $asset->name, $asset->type());
170  return FALSE;
171  }
172  }
173  }
174  $processed = TRUE;
175  }
176  }
177 
178  if (isset($_POST[$prefix.'_cascade_value'])) {
179  $field_cascade_value = TRUE;
180  $processed = TRUE;
181  }
182 
183  return $processed;
184 
185  }//end processInlineValueInterface()
186 
187 
200  public function generateMetadata(Metadata_Field_WYSIWYG $asset, $value_str, &$tag_value, Array &$keywords)
201  {
202  // generate default value correctly
203  if (is_null($value_str)) {
204  $value_str = $asset->attr('default_html');
205  }
206 
207  return parent::generateMetadata($asset, $value_str, $tag_value, $keywords);
208 
209  }//end generateMetadata()
210 
211 
227  public function paintDefault(Metadata_Field_WYSIWYG $asset, Backend_Outputter $o, $prefix)
228  {
229  $write_access = $asset->writeAccess('attributes');
230 
231  if ((boolean)$asset->attr('is_contextable') === TRUE) {
232  $value_str = $asset->attr('default_html');
233  } else {
234  $value_str = $GLOBALS['SQ_SYSTEM']->am->getAttributeValuesByName('default_html', 'metadata_field_wysiwyg', Array($asset->id), 0);
235  $value_str = array_get_index($value_str, $asset->id, '');
236  }
237 
238  $value = '';
239  $value_components = Array();
240  Metadata_Field::decodeValueString($value_str, $value, $value_components);
241 
242  $wysiwyg = $asset->getAttribute('default_html');
243  $wysiwyg->_edit_params['height'] = '100';
244  $wysiwyg->value = $value;
245  $wysiwyg->paint($prefix, !$write_access);
246 
247  return TRUE;
248 
249  }//end paintDefault()
250 
251 
262  public function processDefault(Metadata_Field_WYSIWYG $asset, Backend_Outputter $o, $prefix)
263  {
264  if ($asset->writeAccess('attributes') === FALSE) {
265  return FALSE;
266  }
267 
268  $wysiwyg = $asset->getAttribute('wysiwyg');
269  $wysiwyg->process($prefix, NULL, FALSE);
270  if ($wysiwyg->processed) {
271  $new_value = Metadata_Field::encodeValueString(trim($wysiwyg->value), Array());
272  } else {
273  return FALSE;
274  }
275 
276  $is_contextable = (boolean)$asset->attr('is_contextable');
277  $save_attrs = TRUE;
278 
279  if ($is_contextable === TRUE) {
280  $value = $asset->attr('default_html');
281  } else {
282  $value = $GLOBALS['SQ_SYSTEM']->am->getAttributeValuesByName('default_html', 'metadata_field_wysiwyg', Array($asset->id), 0);
283  $value = array_get_index($value, $asset->id, '');
284  }
285 
286  if ($value !== $new_value) {
287  if ($is_contextable === TRUE) {
288  // If the metadata value is contextable, just use the contextable
289  // default
290  $asset->setAttrValue('default_html', $new_value);
291  } else {
292  // Not contextable; in this case the default value authority goes
293  // to the default context
294  $GLOBALS['SQ_SYSTEM']->changeContext(0);
295 
296  $default_asset = $GLOBALS['SQ_SYSTEM']->am->getAsset($asset->id);
297  $default_asset->setAttrValue('default_html', $new_value);
298  $default_asset->saveAttributes();
299  $GLOBALS['SQ_SYSTEM']->am->forgetAsset($default_asset);
300  unset($default_asset);
301 
302  $GLOBALS['SQ_SYSTEM']->restoreContext();
303 
304  // No need to save attributes in THIS context.
305  $save_attrs = FALSE;
306  }
307  } else {
308  // Nothing to save!
309  $save_attrs = FALSE;
310  }
311 
312  return $save_attrs;
313 
314  }//end processDefault()
315 
316 
317 }//end class
318 ?>