コード例 #1
0
  function edit() {
    ctools_include('form');
    $form_state = array(
      'display' => &$this->display,
      'renderer' => &$this,
      'content_types' => $this->cache->content_types,
      're_render' => FALSE,
      'no_redirect' => TRUE,
      'display_title' => !empty($this->cache->display_title),
      'cache key' => $this->display->cache_key,
    );

    $output = ctools_build_form('panels_edit_display_form', $form_state);
    if ($output) {
      return $output;
    }

    // no output == submit
    if (!$output) {
      if (!empty($form_state['clicked_button']['#save-display'])) {
        drupal_set_message(t('Panel content has been updated.'));
        panels_save_display($this->display);
      }
      else {
        drupal_set_message(t('Your changes have been discarded.'));
      }

      panels_cache_clear('display', $this->display->did);
      return $this->display;
    }
  }
コード例 #2
0
  function edit() {
    $form_state = array(
      'display' => &$this->display,
      'renderer' => &$this,
      'content_types' => $this->cache->content_types,
      'no_redirect' => TRUE,
      'display_title' => !empty($this->cache->display_title),
      'cache key' => $this->display->cache_key,
    );

    $output = drupal_build_form('panels_edit_display_form', $form_state);
    if (empty($form_state['executed']) || !empty($form_state['clicked_button']['preview'])) {
      return $output;
    }

    if (!empty($form_state['clicked_button']['#save-display'])) {
      drupal_set_message(t('Panel content has been updated.'));
      panels_save_display($this->display);
    }
    else {
      drupal_set_message(t('Your changes have been discarded.'));
    }

    panels_cache_clear('display', $this->display->did);
    return $this->display;
  }
コード例 #3
0
 /**
  * Implements Drupal\configuration\Config\Configuration::saveToActiveStore().
  */
 public function saveToActiveStore(ConfigIteratorSettings &$settings)
 {
     ctools_include('export');
     $object = ctools_export_crud_load($this->getComponent(), $this->getIdentifier());
     if ($object) {
         ctools_export_crud_delete($this->getComponent(), $object);
     }
     $data = $this->getData();
     $data->export_type = NULL;
     // get title_pane key if configured.
     if (isset($data->conf['display']->title_pane)) {
         $title_pane = $data->conf['display']->title_pane;
     }
     $display = panels_save_display($data->conf['display']);
     // title_pane configuration workaround.
     if (isset($display->content[$title_pane])) {
         $pid = $display->content[$title_pane]->pid;
         $display->{$title_pane} = $pid;
         db_update('panels_display')->fields(array('title_pane' => $pid))->condition('did', $display->did)->execute();
     }
     $data->conf['did'] = $data->conf['display']->did;
     unset($data->conf['display']);
     ctools_export_crud_save($this->getComponent(), $data);
     $settings->addInfo('imported', $this->getUniqueId());
 }
コード例 #4
0
 /**
  * Implements Drupal\configuration\Config\Configuration::saveToActiveStore().
  */
 public function saveToActiveStore(ConfigIteratorSettings &$settings)
 {
     ctools_include('export');
     $object = ctools_export_crud_load($this->getComponent(), $this->getIdentifier());
     if ($object) {
         ctools_export_crud_delete($this->getComponent(), $object);
     }
     $data = $this->getData();
     $data->export_type = NULL;
     panels_save_display($data->conf['display']);
     $data->conf['did'] = $data->conf['display']->did;
     unset($data->conf['display']);
     ctools_export_crud_save($this->getComponent(), $data);
     $settings->addInfo('imported', $this->getUniqueId());
 }
コード例 #5
0
 public function hook_entity_update($entity)
 {
     list($entity_id, $revision_id, $bundle) = entity_extract_ids($this->entity_type, $entity);
     if (!$this->is_panelized($bundle)) {
         return;
     }
     // If there's no panelizer information on the entity then there is nothing
     // to do.
     if (empty($entity->panelizer)) {
         return;
     }
     // Allow exports or older data to be deployed successfully.
     if (is_object($entity->panelizer)) {
         $entity->panelizer = array('page_manager' => $entity->panelizer);
     }
     // When updating many/most objects, make sure the previous revision's
     // configuration is loaded too, as they won't be automatically loaded.
     // @todo There may be another way of handling this.
     if (isset($entity->original, $entity->original->panelizer)) {
         foreach ($entity->original->panelizer as $view_mode => $panelizer) {
             if (!isset($entity->panelizer[$view_mode])) {
                 $entity->panelizer[$view_mode] = clone $panelizer;
             }
         }
     }
     // Update each panelizer configuration.
     foreach ($entity->panelizer as $view_mode => $panelizer) {
         // In some cases $panelizer is array, convert it to an object.
         if (is_array($panelizer)) {
             $panelizer = (object) $panelizer;
         }
         // Just a safety check to make sure we can't have a missing view mode.
         if (empty($view_mode)) {
             $view_mode = 'page_manager';
         }
         // In certain circumstances $panelizer will be the default's name rather
         // than a full object.
         if (!is_object($panelizer) && is_array($panelizer) && !empty($panelizer['name'])) {
             $panelizer = $this->get_default_panelizer_object($bundle . '.' . $view_mode, $panelizer['name']);
             $panelizer->did = NULL;
             // Ensure original values are maintained.
             $panelizer->entity_id = $entity_id;
             $panelizer->revision_id = $revision_id;
         }
         // Determine whether an existing Panelizer record needs to be updated or
         // a new one created.
         $update = array();
         // This entity supports revisions.
         if ($this->supports_revisions) {
             // If no revision value is assigned, indicating that no record was
             // previously saved for this entity/view_mode combination, or a new
             // revision is being created, create a new {panelizer_entity} record.
             if (empty($panelizer->revision_id) || $panelizer->revision_id != $revision_id) {
                 $panelizer->revision_id = $revision_id;
                 // If this has a custom display, flag the system that the display
                 // needs to be saved as a new record.
                 if (!empty($panelizer->did)) {
                     $panelizer->display_is_modified = TRUE;
                 }
             } else {
                 $update = array('entity_type', 'entity_id', 'revision_id', 'view_mode');
             }
         } else {
             // There is no entity_id set yet, the record was never saved before.
             if (empty($panelizer->entity_id)) {
                 // Nothing to do.
             } else {
                 $update = array('entity_type', 'entity_id', 'view_mode');
             }
         }
         // The editor will set this flag if the display is modified. This lets
         // us know if we need to clone a new display or not.
         // NOTE: This means that when exporting or deploying, we need to be sure
         // to set the display_is_modified flag to ensure this gets written.
         if (!empty($panelizer->display_is_modified)) {
             // Check if this display is shared and avoid changing other revisions
             // displays.
             $has_shared_display_args = array(':entity_type' => $this->entity_type, ':entity_id' => $entity_id, ':revision_id' => $revision_id, ':did' => $panelizer->did);
             $has_shared_display = db_query('SELECT COUNT(did) FROM {panelizer_entity} WHERE entity_type = :entity_type AND entity_id = :entity_id AND revision_id <> :revision_id AND did = :did', $has_shared_display_args)->fetchField();
             // If this is a new entry or the entry is using a display from a
             // default, or revision is enabled and this is a shared display, clone
             // the display.
             if (!$update || empty($panelizer->did) || !empty($has_shared_display)) {
                 $entity->panelizer[$view_mode] = $panelizer = $this->clone_panelizer($panelizer, $entity);
                 // Update the cache key since we are adding a new display
                 $panelizer->display->cache_key = implode(':', array_filter(array('panelizer', $panelizer->entity_type, $panelizer->entity_id, $view_mode, $revision_id)));
             }
             // First write the display
             panels_save_display($panelizer->display);
             // Make sure we have the did.
             $panelizer->did = $panelizer->display->did;
             // Ensure that we always write this as NULL when we have our own panel:
             $panelizer->name = NULL;
         } else {
             $panelizer->entity_type = $this->entity_type;
             $panelizer->entity_id = $entity_id;
             // The (int) ensures that entities that do not support revisions work
             // since the revision_id cannot be NULL.
             $panelizer->revision_id = (int) $revision_id;
             // Make sure we keep the same did as the original if the layout wasn't
             // changed.
             if (empty($panelizer->name) && empty($panelizer->did) && !empty($entity->original->panelizer[$view_mode]->did)) {
                 $panelizer->did = $entity->original->panelizer[$view_mode]->did;
                 $update = array('entity_type', 'entity_id', 'revision_id', 'view_mode');
             }
         }
         // Make sure there is a view mode.
         if (empty($panelizer->view_mode)) {
             $panelizer->view_mode = $view_mode;
         }
         // Make sure there is a 'did' value. This can happen when the value is
         // passed via inline_entity_form.
         if (!isset($panelizer->did)) {
             $panelizer->did = 0;
         }
         // Save the record.
         drupal_write_record('panelizer_entity', $panelizer, $update);
         // If there was a CSS value saved before, update the exported file. This
         // is done after the entity is updated to ensure that the next page load
         // gets the new file.
         ctools_include('css');
         $cache_key = implode(':', array_filter(array('panelizer', $this->entity_type, $entity_id, $view_mode, $revision_id)));
         $filename = ctools_css_retrieve($cache_key);
         if ($filename) {
             ctools_css_clear($cache_key);
         }
         if (!empty($panelizer->css)) {
             ctools_css_store($cache_key, $panelizer->css);
         }
     }
 }
コード例 #6
0
 public function hook_entity_update($entity)
 {
     list($entity_id, $revision_id, $bundle) = entity_extract_ids($this->entity_type, $entity);
     if (!$this->is_panelized($bundle)) {
         return;
     }
     // If there's no panelizer information on the entity then there is nothing to do.
     if (empty($entity->panelizer)) {
         return;
     }
     // Allow exports or older data to be deployed successfully.
     if (is_object($entity->panelizer)) {
         $entity->panelizer = array('page_manager' => $entity->panelizer);
     }
     foreach ($entity->panelizer as $view_mode => $panelizer) {
         // Just a safety check to make sure we can't have a missing view mode.
         if (empty($view_mode)) {
             $view_mode = 'page_manager';
         }
         if ($this->supports_revisions) {
             if (empty($panelizer->revision_id) || $panelizer->revision_id != $revision_id) {
                 $panelizer->revision_id = $revision_id;
                 $update = array();
             } else {
                 $update = array('entity_type', 'revision_id', 'view_mode');
             }
         } else {
             if (empty($panelizer->entity_id)) {
                 $update = array();
             } else {
                 $update = array('entity_type', 'entity_id', 'view_mode');
             }
         }
         // The editor will set this flag if the display is modified. This lets
         // us know if we need to clone a new display or not.
         // NOTE: This means that when exporting or deploying, we need to be sure
         // to set the display_is_modified flag to ensure this gets written.
         if (!empty($panelizer->display_is_modified)) {
             // If this is a new entry or the entry is using a display from a default,
             // clone the display.
             if (!$update || empty($panelizer->did)) {
                 $entity->panelizer[$view_mode] = $panelizer = $this->clone_panelizer($panelizer, $entity);
                 // Update the cache key since we are adding a new display
                 $panelizer->display->cache_key = implode(':', array('panelizer', $panelizer->entity_type, $panelizer->entity_id, $view_mode));
             }
             // First write the display
             panels_save_display($panelizer->display);
             // Make sure we have the did.
             $panelizer->did = $panelizer->display->did;
             // Ensure that we always write this as NULL when we have our own panel:
             $panelizer->name = NULL;
             // Make sure there is a view mode.
             if (!isset($panelizer->view_mode)) {
                 $panelizer->view_mode = $view_mode;
             }
             // And write the new record.
             return drupal_write_record('panelizer_entity', $panelizer, $update);
         } else {
             $panelizer->entity_type = $this->entity_type;
             $panelizer->entity_id = $entity_id;
             // The (int) ensures that entities that do not support revisions work
             // since the revision_id cannot be NULL.
             $panelizer->revision_id = (int) $revision_id;
             // Make sure there is a view mode.
             if (!isset($panelizer->view_mode)) {
                 $panelizer->view_mode = $view_mode;
             }
             drupal_write_record('panelizer_entity', $panelizer, $update);
         }
     }
 }
コード例 #7
0
<?php

// Set the display name you want to migrate to.
$new_display_name = 'some_display';
// Query the panels_display table and get all of the results.
$results = db_select('panels_display', 'pd')->fields('pd')->execute()->fetchAll();
// Loop through the results and load the display.
foreach ($results as $pd) {
    $display = panels_load_display($pd->did);
    $display->layout = $new_display_name;
    panels_save_display($display);
}
コード例 #8
0
/**
*
*  Make the configuration changes needed for Google Scholar and Infinite loop changes
*  hw_google_rollout
*
*/
function hw_google_rollout($jcode, $jnldir, $sitedir)
{
    $modulename = "jnl_" . $jcode . "_entity_pages";
    $minipanel = "jnl_" . $jcode . "_tab_art";
    $pdftab = "jnl_" . $jcode . "_tab_pdf";
    $stablebranch = "7.x-1.x-stable";
    $commitmsg = "Committing Google Scholar and Infinite Loop Changes ";
    $rootdir = $jnldir . "/" . "drupal-webroot";
    if (!file_exists($rootdir)) {
        hw_drush_error_handler("Site specific directory does not exist. Exit. ", E_USER_ERROR);
    }
    ctools_include('plugins');
    ctools_include('page', 'page_manager', 'plugins/tasks');
    ctools_include('page_manager.admin', 'page_manager', '');
    ctools_include('export');
    $minis = ctools_export_load_object('panels_mini');
    // Google Scholar Changes
    // Loop through all the mini panels
    foreach ($minis as $mini) {
        // Update the configuration of article tab mini panel
        if ($mini->name == $minipanel) {
            foreach ($mini->display->content as $contentObj) {
                if ($contentObj->type == 'hw_markup') {
                    $contentObj->configuration['process']['hw_google_scholar'] = 'hw_google_scholar';
                    hw_drush_error_handler("Google Scholar configuration changes completed for site " . $jcode . "\n", E_USER_NOTICE);
                    break;
                }
            }
            // Save panel diplay with updated configuration
            $savedDisplay = panels_save_display($mini->display);
            $mini->did = $savedDisplay->did;
            $mini->display = $savedDisplay;
            $update = isset($mini->pid) && $mini->pid != 'new' ? array('pid') : array();
            drupal_write_record('panels_mini', $mini, $update);
        }
    }
    // Google Infinity Loop Changes.
    // Load all pages
    $tasks = page_manager_get_tasks_by_type('page');
    $page_types = array();
    foreach ($tasks as $task) {
        // Get al the page handlers
        if ($pages = page_manager_load_task_handlers($task)) {
            $page_types[] = $pages;
        }
    }
    // Load all display objects
    foreach ($page_types as &$pages) {
        foreach ($pages as &$page) {
            if ($page && substr($page->name, 0, 9) == 'node_view') {
                $display = $page->conf['display'];
                foreach ($display->content as $contentobj) {
                    if ($contentobj->type == "hw_panel_tabs") {
                        // hw_panel_tabs
                        $contentobj->configuration['mini_panels'][$pdftab]['url_id'] = "full.pdf+html";
                    }
                }
                $savedisplay = panels_save_display($display);
                $page->conf['display'] = $savedisplay;
                page_manager_save_task_handler($page);
                hw_drush_error_handler("Google Infinite Loop changes completed for site " . $jcode . "\n", E_USER_NOTICE);
            }
        }
    }
    hw_update_feature_module($modulename, $rootdir);
    hw_clear_drupal_cache();
    //  hw_checkin_feature_updates($jnldir . "/" . $sitedir . "/modules", $modulename, $stablebranch, $commitmsg);
}