You are here

function advagg_validator_admin_js_hint_form in Advanced CSS/JS Aggregation 7.2

Form builder; CSS validator via jshint.

Return value

array form array.

Related topics

1 string reference to 'advagg_validator_admin_js_hint_form'
advagg_validator_menu in advagg_validator/advagg_validator.module
Implements hook_menu().

File

advagg_validator/advagg_validator.admin.inc, line 98
Admin page callbacks for the advagg validator module.

Code

function advagg_validator_admin_js_hint_form() {
  drupal_set_title(t('AdvAgg: JavaScript Validator using JSHINT'));
  advagg_display_message_if_requirements_not_met();

  // Tell user to update library if a new version is available.
  $module_name = 'advagg_validator';
  $lib_name = 'jshint';
  $form = array();
  list($description) = advagg_get_version_description($lib_name, $module_name, TRUE);
  if (!empty($description)) {
    $form['advagg_version_msg'] = array(
      '#markup' => "<p>{$description}</p>",
    );
  }
  $form = advagg_validator_admin_form_generator('js', TRUE);
  $library = advagg_get_library('jshint', 'advagg_validator');
  if (!empty($library['installed'])) {
    libraries_load('jshint');
    $form['#attached']['libraries_load'][] = array(
      'jshint',
    );
  }
  else {
    $form['#attached']['js'] = $library['variants']['external']['files']['js'];
  }
  $form['#attached']['js'][] = array(
    'data' => drupal_get_path('module', 'advagg_validator') . '/advagg_validator.js',
    'type' => 'file',
  );

  // Define JSHINT options from https://drupal.org/node/1955232
  $settings = array(
    'browser' => TRUE,
    'curly' => TRUE,
    'eqeqeq' => TRUE,
    'forin' => TRUE,
    'latedef' => TRUE,
    'newcap' => TRUE,
    'noarg' => TRUE,
    'strict' => TRUE,
    'trailing' => TRUE,
    'undef' => TRUE,
    'unused' => TRUE,
    'predef' => array(
      'Drupal' => FALSE,
      'drupalSettings' => FALSE,
      'domready' => FALSE,
      'jQuery' => FALSE,
      '_' => FALSE,
      'matchMedia' => FALSE,
      'Backbone' => FALSE,
      'Modernizr' => FALSE,
      'VIE' => FALSE,
      'CKEDITOR' => FALSE,
    ),
  );

  // Comma separated code.
  // https://jslinterrors.com/
  $ignore_list = variable_get('advagg_validator_jshint_ignore', ADVAGG_VALIDATOR_JSHINT_IGNORE);
  if (is_array($ignore_list)) {
    $ignore_list = implode(',', $ignore_list);
  }
  $settings['ignore'] = $ignore_list;
  $form['#attached']['js'][] = array(
    'data' => array(
      'jshint' => $settings,
    ),
    'type' => 'setting',
  );
  return $form;
}