Index: includes/nodereference_explorer.widget.inc
===================================================================
--- includes/nodereference_explorer.widget.inc (revision 3418)
+++ includes/nodereference_explorer.widget.inc (working copy)
@@ -97,7 +97,7 @@
}
//call parent widget process function, provided by plugin (depends on CCK type)
- $element = $element['#plugin']->widget_process($element, $edit, $form_state, $form);
+ $element = $element['#plugin']->widget_process($element, $edit, $form_state, $form);
//add js settings per field only once, preventing multiple settings holds same values
//this is compatible with the "add more" behavior
@@ -133,7 +133,7 @@
//add a preview if enabled (by the content type admin/editor)
if (!empty($field['widget']['content_preview']) && $field['widget']['content_preview'] != '--') {
$preview_weight = $field['widget']['content_preview_position'] == 'below' ? 1 : -1;
- $preview_id = nodereference_explorer_widget_preview($element, $preview_weight);
+ $preview_id = nodereference_explorer_widget_preview($element, $field, $preview_weight);
$components[] = $preview_id; //add preview to components
}
@@ -250,21 +250,36 @@
* form element
* @param $field
* CCK field
+ * @param $preview_weight
+ * number form position
* @return
* id of the preview area
*/
-function nodereference_explorer_widget_preview(&$element, $preview_weight) {
+function nodereference_explorer_widget_preview(&$element, $field, $preview_weight) {
$element['preview'] = array(
'#type' => 'markup',
'#weight' => $preview_weight,
);
- $preview_id = $element['#id'] .'-preview';
-
- //add an empty placeholder for the preview
- $element['preview']['#value'] = '
';
+ $preview_id = $element['#id'] .'-preview'; // HTML id
+ // wrapper
+ $prefix = '';
+ $suffix = '
';
+ if ($element['#default_value']['nid']) { // load preview if value is provided
+ nodereference_explorer_include('nodereference_explorer.views.class');
+ $handler = new nodereference_explorer_views($field);
+ $output = $handler->get_item($element['#default_value']['nid']); // generates HTML preview
+ //wrap output
+ $element['preview']['#prefix'] = $prefix;
+ $element['preview']['#suffix'] = $suffix;
+ $element['preview']['#value'] = $output;
+ }
+ else { //add an empty placeholder for the preview
+ $element['preview']['#value'] = $prefix . $suffix;
+ }
+
nodereference_explorer_add_js('explorer.preview'); //preview behavior js
return $preview_id;
}
Index: plugins/content/link/nodereference_explorer_plugin_content_link.inc
===================================================================
--- plugins/content/link/nodereference_explorer_plugin_content_link.inc (revision 3418)
+++ plugins/content/link/nodereference_explorer_plugin_content_link.inc (working copy)
@@ -23,17 +23,20 @@
$element = link_process($element, $edit, $form_state, $form);
if (isset($element['#default_value']['title']))
$node = node_load(array('title' => $element['#default_value']['title']));
- $element['value'] = array(
- '#id' => $element['#id'],
- '#type' => 'hidden',
- '#value' => !empty($element['#default_value']['title']) && !empty($node->nid) ? $element['#default_value']['title'] . '[nid: ' . $node->nid .']': '',
- );
+ $element['value'] = array(
+ '#id' => $element['#id'],
+ '#type' => 'hidden',
+ '#value' => !empty($element['#default_value']['title']) && !empty($node->nid) ? $element['#default_value']['title'] . '[nid: ' . $node->nid .']': '',
+ );
+ if ($node->nid) {
+ $element['#default_value']['nid'] = $node->nid;
+ }
//create an error element, needed for storing field name for widget settings form and
//validates widget settings properly
$field_key = $element['#columns'][0];
$element['_error_element'] = array(
'#type' => 'value',
- // Wrapping the element around a text_textfield element creates a
+ // Wrapping the element around a text_textfield element creates aS
// nested element, so the final id will look like 'field-name-0-url'.
'#value' => implode('][', array_merge($element['#parents'], array($field_key))),
);
Index: js/explorer.preview.js
===================================================================
--- js/explorer.preview.js (revision 3418)
+++ js/explorer.preview.js (working copy)
@@ -25,12 +25,14 @@
var path = settings['preview'];
var widget = '#' + settings['widget'];
- //attach change action to core widget, triggered when dialog returns a value
- //when loading an editing node with nodereference fields
- // when loading a selection from a autocomplete view selection
+ // Attach change action to core widget, triggered when dialog returns a value
+ // - when loading an editing node with nodereference fields
+ // - when loading a selection from a autocomplete view selection
+ // On first load the preview is generated server side, so there's no
+ // manual trigger, i. e. $(widget).blur() necessary
$(widget).blur(function(event) {
var val = $(this).val(); //current value
- if (val != '') {//placeholder while preview loads
+ if (val != '') { // placeholder while preview loads
$(preview).text(Drupal.t('Preview loading, please wait...'));
Drupal.nodereference_explorer.preview.getPreview(preview, path, val);
}
@@ -38,7 +40,6 @@
$(preview).text('');
}
});
- $(widget).blur();
})
.addClass('nodereference-explorer-processed');
};