function page_content($js, $input, $entity, $view_mode) { $panelizer = $entity->panelizer[$view_mode]; if (empty($panelizer)) { return MENU_NOT_FOUND; } list($entity_id, $revision_id, $bundle) = entity_extract_ids($this->entity_type, $entity); $form_state = array('entity' => $entity, 'revision info' => $this->entity_allows_revisions($entity), 'display cache' => panels_edit_cache_get(implode(':', array_filter(array('panelizer', $this->entity_type, $entity_id, $view_mode, $revision_id)))), 'no_redirect' => TRUE); ctools_include('common', 'panelizer'); $output = drupal_build_form('panelizer_edit_content_form', $form_state); if (!empty($form_state['executed'])) { if (!empty($form_state['clicked_button']['#save-display'])) { drupal_set_message(t('The settings have been updated.')); $entity->panelizer[$view_mode]->display = $form_state['display']; $entity->panelizer[$view_mode]->display_is_modified = TRUE; $this->entity_save($entity); } else { drupal_set_message(t('Changes have been discarded.')); } panels_edit_cache_clear($form_state['display cache']); drupal_goto($_GET['q']); } $output = $this->wrap_entity_panelizer_pages($entity, $view_mode, $output); ctools_set_no_blocks(FALSE); drupal_set_page_content($output); $page = element_info('page'); return $page; }
function edit_form_content(&$form, &$form_state) { ctools_include('ajax'); ctools_include('plugins', 'panels'); ctools_include('display-edit', 'panels'); ctools_include('context'); // If we are cloning an item, we MUST have this cached for this to work, // so make sure: if ($form_state['form type'] == 'clone' && empty($form_state['item']->export_ui_item_is_cached)) { $this->edit_cache_set($form_state['item'], 'clone'); } $cache = panels_edit_cache_get('panels_mini:' . $this->edit_cache_get_key($form_state['item'], $form_state['form type'])); $form_state['renderer'] = panels_get_renderer_handler('editor', $cache->display); $form_state['renderer']->cache = &$cache; $form_state['display'] = &$cache->display; $form_state['content_types'] = $cache->content_types; // Tell the Panels form not to display buttons. $form_state['no buttons'] = TRUE; $form_state['display_title'] = !empty($cache->display_title); $form = panels_edit_display_form($form, $form_state); // Make sure the theme will work since our form id is different. $form['#theme'] = 'panels_edit_display_form'; }
function edit_form(&$form, &$form_state) { ctools_include('plugins', 'panels'); // If the plugin is not set, then it should be provided as an argument: if (!isset($form_state['item']->plugin)) { $form_state['item']->plugin = $form_state['function args'][2]; } parent::edit_form($form, $form_state); $form['category'] = array('#type' => 'textfield', '#title' => t('Category'), '#description' => t('What category this layout should appear in. If left blank the category will be "Miscellaneous".'), '#default_value' => $form_state['item']->category); ctools_include('context'); ctools_include('display-edit', 'panels'); ctools_include('content'); // Provide actual layout admin UI here. // Create a display for editing: $cache_key = 'builder-' . $form_state['item']->name; // Load the display being edited from cache, if possible. if (!empty($_POST) && is_object($cache = panels_edit_cache_get($cache_key))) { $display =& $cache->display; } else { $content_types = ctools_content_get_available_types(); panels_cache_clear('display', $cache_key); $cache = new stdClass(); $display = panels_new_display(); $display->did = $form_state['item']->name; $display->layout = $form_state['item']->plugin; $display->layout_settings = $form_state['item']->settings; $display->cache_key = $cache_key; $display->editing_layout = TRUE; $cache->display = $display; $cache->content_types = $content_types; $cache->display_title = FALSE; panels_edit_cache_set($cache); } // Set up lipsum content in all of the existing panel regions: $display->content = array(); $display->panels = array(); $custom = ctools_get_content_type('custom'); $layout = panels_get_layout($display->layout); $regions = panels_get_regions($layout, $display); foreach ($regions as $id => $title) { $pane = panels_new_pane('custom', 'custom'); $pane->pid = $id; $pane->panel = $id; $pane->configuration = ctools_content_get_defaults($custom, 'custom'); $pane->configuration['title'] = 'Lorem Ipsum'; $pane->configuration['body'] = $this->lipsum; $display->content[$id] = $pane; $display->panels[$id] = array($id); } $form_state['display'] =& $display; // Tell the Panels form not to display buttons. $form_state['no buttons'] = TRUE; $form_state['no display settings'] = TRUE; $form_state['cache_key'] = $cache_key; $form_state['content_types'] = $cache->content_types; $form_state['display_title'] = FALSE; $form_state['renderer'] = panels_get_renderer_handler('editor', $cache->display); $form_state['renderer']->cache =& $cache; $form = panels_edit_display_form($form, $form_state); // If we leave the standard submit handler, it'll try to reconcile // content from the input, but we've not exposed that to the user. This // makes previews work with the content we forced in. $form['preview']['button']['#submit'] = array('panels_edit_display_form_preview'); }