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.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

All other Modules /

Discuss all other Modules here.

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

Translatable and 3.1 - publishall not working - hack

Go to End



Community Member, 1 Post

25 April 2013 at 8:28pm

Edited: 26/04/2013 8:15pm

This is fixed on github now. Ingo committed a broader solution to the problem the day this was posted. Kudo's for the quick reaction!

Hi there,

When using the Translatable module (master branch from github dated 14/04/2013) the publishall function (http://<yoursite>/admin/pages/publishall) ( is not working and just returns to the confirm form.

Upon investigation I found that Translatable strips the needed security token and the confirm parameter from the POST request that the publishall confirmation form sends.

As a workaround I added the following line after line 21 in the init function of TranslatableCMSMainExtension.php . There may be a more generic way as I suspect other CMSMain functions like buildbrokenlinks() to suffer from the same problem.
if($req->param('Action') == 'publishall') return;

(sorry for the bad layout, preformatted text get its leading white space stripped in the forum, even when tagged as a code block)
the line with the + in first position is the one that was added:

@@ -19,6 +19,7 @@
                // $Lang serves as a "context" which can be inspected by Translatable - hence it
                // has the same name as the database property on Translatable.
                $req = $this->owner->getRequest();
+               if($req->param('Action') == 'publishall') return;
                $id = $req->param('ID');
                if($req->requestVar("Locale")) {
                        $this->owner->Locale = $req->requestVar("Locale");