franck@0: 'checkbox', franck@0: '#default_value' => variable_get('popups_reference_show_add_link_'. $field_name, TRUE), franck@0: '#title' => t('Show the "Add New: Node Type" Popup links'), franck@0: '#description' => t("Activate Popups:Add and Reference behavior for this reference.") franck@0: ); franck@0: $form['#submit'][] = '_popups_reference_manage_fields_submit'; franck@0: } franck@0: elseif (isset($form['type'])) { franck@0: // Add the "Add New: Node Type" links. franck@0: $node = $form['#node']; franck@0: if ($form['type']['#value'] .'_node_form' == $form_id) { franck@0: $fields = content_fields(); franck@0: foreach ($form as $key => $item) { franck@0: if (is_array($item)) { franck@0: $type = $item['#type']; franck@0: if ($type == 'fieldset') { // Loop through all the subitems. franck@0: foreach ($form[$key] as $subkey => $subitem) { franck@0: popups_reference_alter_item($form[$key], $subkey, $subitem, $fields); franck@0: } franck@0: } franck@0: else { franck@0: popups_reference_alter_item($form, $key, $item, $fields); franck@0: } franck@0: } franck@0: franck@0: } franck@0: } franck@0: } franck@0: } franck@0: franck@0: /** franck@0: * Implementation of hook_nodeapi(). franck@0: * Add cookies with node info when a new node is created. franck@0: * These cookies will be found by the popups_reference behavior and used franck@0: * to select the newly created node in the reference widget. franck@0: */ franck@0: function popups_reference_nodeapi($node, $op) { franck@0: if ($op == 'insert') { franck@0: $five = time()+300; // 5 minutes in the future. franck@0: setcookie("PopupRefNid", $node->nid, $five, '/'); franck@1: setrawcookie("PopupRefTitle", rawurlencode($node->title), $five, '/'); franck@0: } franck@0: } franck@0: franck@0: /** franck@0: * Submit added to the the nodereference settings form. franck@0: * Set a variable for each nodereference field. franck@0: */ franck@0: function _popups_reference_manage_fields_submit($form, &$form_state) { franck@0: $field_name = $form['#field']['field_name']; franck@0: variable_set('popups_reference_show_add_link_'. $field_name, $form_state['values']['show_add_link']); franck@0: } franck@0: franck@0: /** franck@0: * Run on every element in the basic node form. franck@0: * Wrap the enabled nodereference fields, and add the popup links. franck@0: * franck@0: * @param $form - the form (or fieldgroup). franck@0: * @param $key - form element name. franck@0: * @param $item - the form element array. franck@0: * @param $fields - all fields info. franck@0: */ franck@0: function popups_reference_alter_item(&$form, $key, $item, $fields) { franck@0: $field_name = strstr($key, 'field_'); // Check if $key starts with 'field_'; franck@0: if (isset($fields[$field_name]) && franck@0: $fields[$field_name]['type'] == 'nodereference' && franck@0: variable_get('popups_reference_show_add_link_'. $field_name, TRUE)) { franck@0: $type = $form['type']['#value']; franck@0: $field = content_fields($field_name, $form['type']['#value']); franck@0: franck@0: $wrapper_id = 'popups-reference-' . _popups_reference_counter(); franck@0: $links = _popups_reference_links($field, $type, $wrapper_id, $field['widget']['type']); franck@0: if ($links) { franck@0: // Put the nodereference widget and links in an wrapper. franck@0: // Makes it easy to find for Ahah targeting, and popups_reference behavior selecting. franck@4: $form[$key]['#popups_reference_prefix'] = '