core/modules/_core/template/crud/field/i18n.phtml

Summary

Maintainability
Test Coverage
<?php
/* @var $this Ajde_Template_Parser_Phtml_Helper */

/* @var $field Ajde_Crud_Field_I18n */
$field = $this->field;

if ($field->getValue()) {
    $pk = $field->getValue();
} else if ($field->getDefault()) {
    $pk = $field->getDefault();
} else {
    $pk = null;
}

$item = $field->getCrud()->getModel();
/* @var $item Ajde_Lang_Proxy_Model */


?>

<select
    data-placeholder="Choose an option"
    <?php echo $field->getHtmlAttributes(); ?>    
>
    <?php if (!$field->getIsRequired() === true) { ?>
        <option value=''></option>
    <?php } ?>
    <?php foreach($field->getValues() as $key => $option) { ?>
        <option value='<?php echo $key; ?>'
            <?php
            if ($key == $pk) { echo "selected='selected'"; }
            elseif ($field->hasReadonly() && $field->getReadonly() === true) { echo ' disabled="disabled" '; }
            ?>
            ><?php echo $option; ?></option>
    <?php } ?>
</select>

<?php if ($item->isTranslatable()) {

    $rootLang = $item->getRootLang(); ?>
    
    <div class='translations'>
        Translate:

        <?php if ($rootLang) {
            $editRoute = Ajde::app()->getRoute()->buildRoute(false);
            $editRoute .= '?edit=' . $rootLang->getPK();        
            ?>
            <a href="<?php echo $editRoute; ?>">
                <?php echo Ajde_Lang::niceName($rootLang->getLanguage()); ?></a>
        <?php }
        foreach($field->getAvailableTranslations() as $lang => $translation) { ?>
        
            <?php if ($lang != $pk) {
                if ($rootLang !== false && $rootLang->getLanguage() == $lang) {
                    break;
                }
                
                $editRoute = Ajde::app()->getRoute()->buildRoute(false);
                $cloneFields = '';
                
                if (isset($translation['model'])) {
                    $editRoute .= '?edit=' . $translation['model']->getPK();
                } else {
    //                 $cloneFields = 'data-clone="' . implode(',', $field->getFieldsToClone()) . '"';
                    
                    $editRoute .= '?new';
                    $editRoute .= '&prefill[' . $item->getLanguageField() . ']=' . $lang;
                    $editRoute .= '&prefill[' . $item->getLanguageRootField() . ']=' . ($rootLang === false ? $item->getPK() : $rootLang->getPK());
                    $editRoute .= '&hide[' . $item->getLanguageField() . ']=1';
                    
                    foreach($field->getFieldsToClone() as $cloneField) {
                        $editRoute .= '&prefill[' . $cloneField . ']=' . urlencode($item->get($cloneField));
                    }
                    
                    // prefill translated parent if available
                    // TODO: this is NodeModel specific
                    if ($item->has('parent')) {
                        $parent = $item->getParent();
                        $translatedParent = $parent->getTranslatedLazy($lang);
                        $editRoute .= '&prefill[parent]=' . $translatedParent->getPK();
                    }
                }
                ?>
                <a
                    href="<?php echo $editRoute; ?>"
                    <?php echo $cloneFields; ?>
                    <?php if (!isset($translation['model'])) { echo "class='new'"; } ?>
                ><?php echo $translation['name']; ?></a>
            <?php } ?>
            
        <?php } ?>
    </div>
    
<?php } else { ?>

    <div class='translations'>
        Item becomes translatable after saving
    </div>
    
    
<?php } ?>