Hi!
I'm currently trying to force the user to create blogentries in german and english simultaneously, since we use the blog widget for our news.
The problem is that I want to link german and english version of the news, so I'm using createTranslation(). Works well so far if it weren't for two huge problems:
1. The PageType of the translated blogentry object is "none". How can I change this?
2. Despite having the english texts saved, the german ones are displayed in both versions.
Here's the code I'm using:
function postblog($data, $form) {
if(!Permission::check('BLOGMANAGEMENT')) return Security::permissionFailure();
Cookie::set("BlogHolder_Name", $data['Author']);
$blogentry = false;
if(isset($data['ID']) && $data['ID']) {
$blogentry = DataObject::get_by_id("BlogEntry", $data['ID']);
}
if(!$blogentry) {
$blogentry = new BlogEntry();
}
$form->saveInto($blogentry);
if(i18n::get_locale() === "de_DE") {
$blogentry->Content = $form->datafieldByName('BlogPost')->dataValue();
$blogentry->Title = $form->datafieldByName('Title')->dataValue();
} else if (i18n::get_locale() === "en_US") {
$blogentry->Content = $form->datafieldByName('BlogPostEN')->dataValue();
$blogentry->Title = $form->datafieldByName('TitleEN')->dataValue();
}
$blogentry->ParentID = $this->ID;
$blogentry->Status = "Published";
$blogentry->writeToStage("Stage");
$blogentry->publish("Stage", "Live");
$translatedBlogentry = new BlogEntry();
$form->saveInto($translatedBlogentry);
//check current language and automatically choose the other one for
//the translation.
if(i18n::get_locale() === "de_DE") {
$translatedBlogentry = $blogentry->createTranslation('en_US');
unset($translatedBlogentry->Title);
unset($translatedBlogentry->Content);
$translateBlogentry->PageType = 'BlogEntry';
$translatedBlogentry->Title = $form->datafieldByName('TitleEN')->dataValue();
$translatedBlogentry->Content = $form->datafieldByName('BlogPostEN')->dataValue();
$translatedBlogentry->ParentID = Translatable::get_one_by_locale('BlogHolder', ('en_US'))->ID;
} else if (i18n::get_locale() === "en_US") {
$translatedBlogentry = $blogentry->createTranslation('de_DE');
unset($translatedBlogentry->Title);
unset($translatedBlogentry->Content);
$translateBlogentry->PageType = 'BlogEntry';
$translatedBlogentry->Title = $form->datafieldByName('Title')->dataValue();
$translatedBlogentry->Content = $form->datafieldByName('BlogPost')->dataValue();
$translatedBlogentry->ParentID = Translatable::get_one_by_locale('BlogHolder', ('de_DE'))->ID;
}
$translatedBlogentry->Status = "Published";
$translatedBlogentry->writeToStage("Stage");
$translatedBlogentry->publish("Stage", "Live");
Director::redirect($this->Link());
}
[/code/