Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Blog Module /

Discuss the Blog Module.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Setting PageType to BlogEntry


Reply


1014 Views

Avatar
Hoppi

Community Member, 1 Post

14 January 2010 at 12:21am

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/