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'); };