<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>

CC BY-SA 3.0
2015-04-16T10:52:10.633Z
2015-04-16T10:52:10.633Z
Mike Pepper
<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>

<control-panel><sources>
Can custom entry sources have their own URLs?
# 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.
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.


---

