Example #1
0
 init_controls_from_prefs: function() {
   var prefs = Cookies.getJSON('prefs');
   if (!prefs) {
     prefs = {};
   }
   if (prefs['regex'] !== undefined) {
     CodesearchUI.input_regex.prop('checked', prefs['regex']);
   }
   if (prefs['repos'] !== undefined) {
     RepoSelector.updateSelected(prefs['repos']);
   } else if (CodesearchUI.defaultSearchRepos !== undefined) {
     RepoSelector.updateSelected(CodesearchUI.defaultSearchRepos);
   }
   if (prefs['context'] !== undefined) {
     CodesearchUI.input_context.prop('checked', prefs['context']);
   }
 },
Example #2
0
    onload: function() {
      if (CodesearchUI.input)
        return;

      CodesearchUI.view = new ResultView({model: CodesearchUI.state});

      CodesearchUI.input      = $('#searchbox');
      CodesearchUI.input_repos = $('#repos');
      CodesearchUI.input_backend = $('#backend');
      if (CodesearchUI.input_backend.length == 0)
        CodesearchUI.input_backend = null;
      CodesearchUI.inputs_case = $('input[name=fold_case]');
      CodesearchUI.input_regex = $('input[name=regex]');
      CodesearchUI.input_context = $('input[name=context]');

      if (CodesearchUI.inputs_case.filter(':checked').length == 0) {
          CodesearchUI.inputs_case.filter('[value=auto]').attr('checked', true);
      }

      RepoSelector.init();
      CodesearchUI.update_repo_options();

      CodesearchUI.init_query();

      CodesearchUI.input.keydown(CodesearchUI.keypress);
      CodesearchUI.input.bind('paste', CodesearchUI.keypress);
      CodesearchUI.input.focus();
      if (CodesearchUI.input_backend)
        CodesearchUI.input_backend.change(CodesearchUI.select_backend);

      CodesearchUI.inputs_case.change(CodesearchUI.keypress);
      CodesearchUI.input_regex.change(CodesearchUI.keypress);
      CodesearchUI.input_repos.change(CodesearchUI.keypress);
      CodesearchUI.input_context.change(CodesearchUI.toggle_context);

      CodesearchUI.input_regex.change(function(){
        CodesearchUI.set_pref('regex', CodesearchUI.input_regex.prop('checked'));
      });
      CodesearchUI.input_repos.change(function(){
        CodesearchUI.set_pref('repos', CodesearchUI.input_repos.val());
      });
      CodesearchUI.input_context.change(function(){
        CodesearchUI.set_pref('context', CodesearchUI.input_context.prop('checked'));
      });

      CodesearchUI.toggle_context();

      Codesearch.connect(CodesearchUI);

      // Update the search when the user hits Forward or Back.
      window.onpopstate = function(event) {
        var parms = CodesearchUI.parse_query_params();
        CodesearchUI.init_query_from_parms(parms);
        CodesearchUI.newsearch();
      }
    },
Example #3
0
    init_query_from_parms: function(parms) {
      var q = [];
      if (parms.q)
        q.push(parms.q[0]);
      if (parms.file)
        q.push("file:" + parms.file[0]);
      CodesearchUI.input.val(q.join(' '));

      if (parms.fold_case) {
        CodesearchUI.inputs_case.filter('[value='+parms.fold_case[0]+']').attr('checked', true);
      }

      if (parms.regex) {
        CodesearchUI.input_regex.prop('checked', parms.regex[0] === "true");
      }

      if (parms.context) {
        CodesearchUI.input_context.prop('checked', parms.context[0] === 'true');
      }

      var backend = null;
      if (parms.backend)
        backend = parms.backend;
      var m;
      if (m = (new RegExp("/search/([^\/]+)/?").exec(window.location.pathname))) {
        backend = m[1];
      }
      if (backend && CodesearchUI.input_backend) {
        var old_backend = CodesearchUI.input_backend.val();
        CodesearchUI.input_backend.val(backend);

        // Something (bootstrap-select?) messes with the behaviour of val() on
        // normal select elements, so that trying to set an invalid value sets
        // null, rather than leaving the value unchanged. We manually check and
        // roll back if that happens (e.g. because someone navigated to a URL
        // like "/search/bogus?q=foo").
        if (CodesearchUI.input_backend.val() === null) {
            CodesearchUI.input_backend.val(old_backend);
        }
      }

      var repos = [];
      if (parms.repo)
        repos = repos.concat(parms.repo);
      if (parms['repo[]'])
        repos = repos.concat(parms['repo[]']);
      RepoSelector.updateSelected(repos);
    },
Example #4
0
 update_repo_options: function(repos) {
   if (!CodesearchUI.input_backend)
     return;
   var backend = CodesearchUI.input_backend.val();
   RepoSelector.updateOptions(_.keys(CodesearchUI.repo_urls[backend]));
 },