diff --git a/sites/all/modules/contrib/ctools/page_manager/page_manager.install b/sites/all/modules/contrib/ctools/page_manager/page_manager.install index ad2781c..52fd1e8 100644 --- a/sites/all/modules/contrib/ctools/page_manager/page_manager.install +++ b/sites/all/modules/contrib/ctools/page_manager/page_manager.install @@ -23,6 +23,8 @@ function page_manager_schema_1() { 'identifier' => 'handler', 'bulk export' => TRUE, 'export callback' => 'page_manager_export_task_handler', + 'load callback' => 'page_manager_export_task_handler_load', + 'delete callback' => 'page_manager_delete_task_handler', 'primary key' => 'did', 'api' => array( 'owner' => 'page_manager', @@ -63,6 +65,7 @@ function page_manager_schema_1() { 'weight' => array( 'type' => 'int', 'description' => 'The order in which this handler appears. Lower numbers go first.', + 'export callback' => 'page_manager_export_task_handler_field_weight', ), 'conf' => array( 'type' => 'text', diff --git a/sites/all/modules/contrib/ctools/page_manager/page_manager.module b/sites/all/modules/contrib/ctools/page_manager/page_manager.module index 790c64e..a557b8c 100644 --- a/sites/all/modules/contrib/ctools/page_manager/page_manager.module +++ b/sites/all/modules/contrib/ctools/page_manager/page_manager.module @@ -697,6 +697,33 @@ function page_manager_export_task_handler($handler, $indent = '') { } /** + * Since weight is duplicated in extra table it needs to be handled as an exception. + */ +function page_manager_export_task_handler_field_weight($task, $field, $value) { + $result = db_query('SELECT weight FROM {page_manager_weights} WHERE name = (:names)', array(':names' => $task->name))->fetchField(); + return is_numeric($result) ? $result : $value; +} + +/** + * Since weight is duplicated in extra table delete action should be called + * every time. To make this happen export_type should return EXPORT_IN_DATABASE + * status. + * + * @see ctools_component_features_revert(); + */ +function page_manager_export_task_handler_load($name) { + $table = 'page_manager_handlers'; + $schema = ctools_export_get_schema($table); + $export = $schema['export']; + + $result = ctools_export_load_object($table, 'names', array($name)); + if (isset($result[$name])) { + $result[$name]->export_type = EXPORT_IN_DATABASE; + return $result[$name]; + } +} + +/** * Create a new task handler object. * * @param $plugin