Answers.Body: <p>After a little more digging, I discovered this can be achieved by adding a <code>data</code> array with a <code>handle</code> value to the source, so that code becomes:</p>
  
  <pre><code>public function modifyEntrySources(&amp;$sources, $context)
  {
      if ($context == 'index')
      {
          $sources[] = array('heading' =&gt; 'Translations');
  
          $sources['translations:untranslated'] = array(
              'label'    =&gt; Craft::t('Untranslated'),
              'criteria' =&gt; array('translationCompleted' =&gt; array('0', null)),
              'data'     =&gt; array('handle' =&gt; 'untranslated'),
          );
  
          $sources['translations:translated'] = array(
              'label'    =&gt; Craft::t('Translated'),
              'criteria' =&gt; array('translationCompleted' =&gt; '1'),
              'data'     =&gt; array('handle' =&gt; 'translated'),
          );
      }
  }
  </code></pre>
  
  <p>This doesn't appear to work for nested sources however.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-04-16T10:52:10.633Z
Answers.LastActivityDate: 2015-04-16T10:52:10.633Z
Answers.UserDisplayName: Mike Pepper
Body: <p>I can go to <a href="http://example.com/admin/entries/sectionHandle" rel="nofollow">http://example.com/admin/entries/sectionHandle</a>, and the Entries list has that source selected, but I can't find a way to do that with sources added through <a href="http://buildwithcraft.com/docs/plugins/hooks-reference#modifyEntrySources" rel="nofollow">modifyEntrySources</a>.</p>
  
  <p>I've got two extra sources for entries that have been fully translated, and those that haven't, so we can track our progress as we translate the site.</p>
  
  <p>Is there anything I can add to the array so that I could link to something like <a href="http://www.example.com/admin/entries/untranslated" rel="nofollow">http://www.example.com/admin/entries/untranslated</a>?</p>
  
  <pre><code>public function modifyEntrySources(&amp;$sources, $context)
  {
      if ($context == 'index')
      {
          $sources[] = array('heading' =&gt; 'Translations');
  
          $sources['translations:untranslated'] = array(
              'label' =&gt; Craft::t('Untranslated'),
              'criteria' =&gt; array('translationCompleted' =&gt; array('0', null))
          );
  
          $sources['translations:translated'] = array(
              'label' =&gt; Craft::t('Translated'),
              'criteria' =&gt; array('translationCompleted' =&gt; '1')
          );
      }
  }
  </code></pre>
  
Tags: <control-panel><sources>
Title: Can custom entry sources have their own URLs?
ThreadText: # Can custom entry sources have their own URLs?
  
  (Asked by: username_0 on 2015-04-13)
  
  I can go to <http://example.com/admin/entries/sectionHandle>, and the Entries list has that source selected, but I can't find a way to do that with sources added through [modifyEntrySources](http://buildwithcraft.com/docs/plugins/hooks-reference#modifyEntrySources).
  
  I've got two extra sources for entries that have been fully translated, and those that haven't, so we can track our progress as we translate the site.
  
  Is there anything I can add to the array so that I could link to something like <http://www.example.com/admin/entries/untranslated>?
  
  ```
  public function modifyEntrySources(&$sources, $context)
  {
      if ($context == 'index')
      {
          $sources[] = array('heading' => 'Translations');
  
          $sources['translations:untranslated'] = array(
              'label' => Craft::t('Untranslated'),
              'criteria' => array('translationCompleted' => array('0', null))
          );
  
          $sources['translations:translated'] = array(
              'label' => Craft::t('Translated'),
              'criteria' => array('translationCompleted' => '1')
          );
      }
  }
  
  ```
  
  **Tags:** control-panel, sources
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_0 on 2015-04-16. Score: 2 | Accepted answer
  
  After a little more digging, I discovered this can be achieved by adding a `data` array with a `handle` value to the source, so that code becomes:
  
  ```
  public function modifyEntrySources(&$sources, $context)
  {
      if ($context == 'index')
      {
          $sources[] = array('heading' => 'Translations');
  
          $sources['translations:untranslated'] = array(
              'label'    => Craft::t('Untranslated'),
              'criteria' => array('translationCompleted' => array('0', null)),
              'data'     => array('handle' => 'untranslated'),
          );
  
          $sources['translations:translated'] = array(
              'label'    => Craft::t('Translated'),
              'criteria' => array('translationCompleted' => '1'),
              'data'     => array('handle' => 'translated'),
          );
      }
  }
  
  ```
  
  This doesn't appear to work for nested sources however.
  
  
  ---
  
  