Pārlūkot izejas kodu

json editor of whole configuration of a track works, need more tests

Jiu9Shen 5 gadi atpakaļ
vecāks
revīzija
fcef351b97

+ 1 - 2
tripal_jbrowse_mgmt/includes/tripal_jbrowse_mgmt_json_editor.form.inc

@@ -203,8 +203,7 @@ function tripal_jbrowse_mgmt_json_editor_form_submit($form, &$form_state) {
   }
 
   $json['tracks'][$track_index] = $track_json;
-  //@TEST
-  dpm($json, '$json in submit form');
+
   if (tripal_jbrowse_mgmt_save_json($track->instance, $json) === FALSE) {
     drupal_set_message(
       'Unable to save JSON file. Please make sure it\'s editable.'

+ 0 - 134
tripal_jbrowse_mgmt/includes/tripal_jbrowse_mgmt_json_editor_advance.form.inc

@@ -1,134 +0,0 @@
-<?php
-
-/**
- * Track json editor advance form.
- * allow user to make advanced changes
- *
- * @param array $form
- * @param array $form_state
- * @param int $track_id
- *
- * @return array
- * @throws \Exception
- */
-function tripal_jbrowse_mgmt_json_editor_advance_form($form, &$form_state, $track_id) {
-  $track = tripal_jbrowse_mgmt_get_track($track_id);
-  if (empty($track)) {
-    drupal_not_found();
-    return $form;
-  }
-
-  drupal_set_title('Edit Track Advance: ' . $track->label);
-
-  $breadcrumb = array();
-  $breadcrumb[] = l('Home', '');
-  $breadcrumb[] = l('Administration', 'admin');
-  $breadcrumb[] = l('Tripal', 'admin/tripal');
-  $breadcrumb[] = l('Extensions', 'admin/tripal/extension');
-  $breadcrumb[] = l('Tripal JBrowse', 'admin/tripal/extension/tripal_jbrowse/management');
-  $breadcrumb[] = l('Instance', 'admin/tripal/extension/tripal_jbrowse/management/tracks/'.$track->instance_id);
-  $breadcrumb[] = l('Instance', 'admin/tripal/extension/tripal_jbrowse/management/tracks/'.$track->instance_id.'/edit_json');
-  drupal_set_breadcrumb($breadcrumb);
-
-  $instance = tripal_jbrowse_mgmt_get_instance($track->instance_id);
-  $json = tripal_jbrowse_mgmt_get_json($instance);
-  $form_state['track_json'] = $json;
-
-  $key = tripal_jbrowse_mgmt_make_slug($track->label);
-  $track_json = NULL;
-  $track_index = NULL;
-  foreach ($json['tracks'] as $index => $jtrack) {
-    if ($jtrack['label'] === $key) {
-      $track_json = $jtrack;
-      $track_index = $index;
-      break;
-    }
-  }
-  //@TEST
-  dpm($track_json, '$track_json');
-  dpm($track_index, '$track_index');
-  if (!$track_json) {
-    $form['error'] = [
-      '#type' => 'item',
-      '#markup' => '<p style="color: red">Unable to find track in json!</p>',
-    ];
-    return $form;
-  }
-
-  $form['track_index'] = [
-    '#type' => 'hidden',
-    '#value' => $track_index,
-  ];
-
-  $form['track_id'] = [
-    '#type' => 'hidden',
-    '#value' => $track->id,
-  ];
-
-  $form['track_all_config'] = [
-    '#type' => 'textarea',
-    '#title' => t('Track configuration in json'),
-    '#description' => t('The track info from trackList.json. Only '),
-    '#default_value' => json_encode($track_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES),
-    '#rows' => '10',
-    '#required' => TRUE,
-  ];
-
-
-  $form['submit'] = [
-    '#type' => 'submit',
-    '#value' => 'Save Track Configuration',
-  ];
-
-  return $form;
-}
-
-/**
- * Validate the form.
- *
- * @param $form
- * @param $form_state
- */
-function tripal_jbrowse_mgmt_json_editor_advance_form_validate($form, &$form_state) {
-  //@TEST
-  dpm($form_state, '$form_state in validation');
-  $values = $form_state['values'];
-  $track_all_config = $values['track_all_config'] ?? NULL;
-
-  if ($track_all_config && !empty($track_all_config)) {
-    if (!json_decode($track_all_config)) {
-      form_set_error(
-        'track_all_config',
-        'Invalid JSON. Please verify that the menu template contains only valid JSON.'
-      );
-    }
-  }
-
-}
-
-/**
- * @param array $form
- * @param array $form_state
- *
- * @throws \Exception
- */
-function tripal_jbrowse_mgmt_json_editor_advance_form_submit($form, &$form_state) {
-  $values = $form_state['values'];
-  $track_index = $values['track_index'];
-  $track_all_config = $values['track_all_config'] ?? NULL;
-
-  $track = tripal_jbrowse_mgmt_get_track($values['track_id']);
-
-  $json = $form_state['track_json'];
-  $json['tracks'][$track_index] = json_decode($track_all_config, TRUE);
-  //@TEST
-  dpm($json, '$json in submit');
-  if (tripal_jbrowse_mgmt_save_json($track->instance, $json) === FALSE) {
-    drupal_set_message(
-      'Unable to save JSON file. Please make sure it\'s editable.'
-    );
-    return;
-  }
-
-  drupal_set_message('Track updated successfully');
-}

+ 131 - 0
tripal_jbrowse_mgmt/includes/tripal_jbrowse_mgmt_tracks.form.inc

@@ -367,3 +367,134 @@ function tripal_jbrowse_mgmt_delete_track_form_submit($form, &$form_state) {
 
   drupal_goto('admin/tripal/extension/tripal_jbrowse/management/instances/' . $track->instance_id);
 }
+
+/**
+ * Track json editor advance form.
+ * allow user to make advanced changes
+ *
+ * @param array $form
+ * @param array $form_state
+ * @param int $track_id
+ *
+ * @return array
+ * @throws \Exception
+ */
+function tripal_jbrowse_mgmt_json_editor_advance_form($form, &$form_state, $track_id) {
+  $track = tripal_jbrowse_mgmt_get_track($track_id);
+
+  if (!$track->id) {
+    $form['error'] = [
+      '#type' => 'item',
+      '#markup' => '<p style="color: red">Unable to find track.</p>',
+    ];
+
+    return $form;
+  }
+
+  $instance = tripal_jbrowse_mgmt_get_instance($track->instance_id);
+  $json = tripal_jbrowse_mgmt_get_json($instance);
+  $form_state['track_json'] = $json;
+
+  $key = tripal_jbrowse_mgmt_make_slug($track->label);
+  $track_json = NULL;
+  $track_index = NULL;
+  foreach ($json['tracks'] as $index => $jtrack) {
+    if ($jtrack['label'] === $key) {
+      $track_json = $jtrack;
+      $track_index = $index;
+      break;
+    }
+  }
+
+  if (!$track_json) {
+    $form['error'] = [
+      '#type' => 'item',
+      '#markup' => '<p style="color: red">Unable to find track in json!</p>',
+    ];
+    return $form;
+  }
+
+  $form['track_index'] = [
+    '#type' => 'hidden',
+    '#value' => $track_index,
+  ];
+
+  $form['track_id'] = [
+    '#type' => 'hidden',
+    '#value' => $track->id,
+  ];
+
+  $instr_detail = '<p><strong>Only use this function if wanted configuration option is not included in Track Manage.</strong></p>';
+
+  $form['Instruction']=[
+    '#type' => 'markup',
+    '#markup' => $instr_detail,
+  ];
+
+  $form['track_all_config'] = [
+    '#type' => 'textarea',
+    '#title' => t('Track configuration in json'),
+    '#description' => t('The track info from trackList.json. Only '),
+    '#default_value' => json_encode($track_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES),
+    '#rows' => '10',
+    '#required' => TRUE,
+  ];
+
+
+  $form['submit'] = [
+    '#type' => 'submit',
+    '#value' => 'Save Track Configuration',
+  ];
+
+  return $form;
+}
+
+/**
+ * Validate the form.
+ *
+ * @param $form
+ * @param $form_state
+ */
+function tripal_jbrowse_mgmt_json_editor_advance_form_validate($form, &$form_state) {
+  $values = $form_state['values'];
+  $track_all_config = $values['track_all_config'] ?? NULL;
+
+  if ($track_all_config && !empty($track_all_config)) {
+    if (!json_decode($track_all_config)) {
+      form_set_error(
+        'track_all_config',
+        'Invalid JSON. Please verify that the menu template contains only valid JSON.'
+      );
+    }
+  }
+
+}
+
+/**
+ * @param array $form
+ * @param array $form_state
+ *
+ * @throws \Exception
+ */
+function tripal_jbrowse_mgmt_json_editor_advance_form_submit($form, &$form_state) {
+  $values = $form_state['values'];
+  $track_index = $values['track_index'];
+  $track_all_config = $values['track_all_config'] ?? NULL;
+  //@TEST
+  dpm($form_state, '$form_state in submit');
+  $track = tripal_jbrowse_mgmt_get_track($values['track_id']);
+
+  $json = $form_state['track_json'];
+  $json['tracks'][$track_index] = json_decode($track_all_config, TRUE);
+  tripal_jbrowse_mgmt_update_track($track, ['label' => $json['tracks'][$track_index]['label']]);
+  //@TEST
+  dpm($json, '$json in submit');
+  if (tripal_jbrowse_mgmt_save_json($track->instance, $json) === FALSE) {
+    drupal_set_message(
+      'Unable to save JSON file. Please make sure it\'s editable.'
+    );
+    return;
+  }
+
+  drupal_set_message('Track updated successfully');
+}

+ 1 - 1
tripal_jbrowse_mgmt/tripal_jbrowse_mgmt.module

@@ -120,7 +120,7 @@ function tripal_jbrowse_mgmt_menu() {
     'page callback' => 'drupal_get_form',
     'page arguments' => ['tripal_jbrowse_mgmt_json_editor_advance_form', 6],
     'access arguments' => ['administer tripal_jbrowse_mgmt'],
-    'file' => 'includes/tripal_jbrowse_mgmt_json_editor_advance.form.inc',
+    'file' => 'includes/tripal_jbrowse_mgmt_tracks.form.inc',
     'type' => MENU_LOCAL_ACTION,
   ];