protected function addModules(OutputPage $out, $action)
 {
     if ($this->actions->hasValue($action, 'modules')) {
         $out->addModuleStyles($this->actions->getValue($action, 'modules'));
     } else {
         $out->addModules(array('ext.flow'));
     }
     if ($this->actions->hasValue($action, 'moduleStyles')) {
         $out->addModuleStyles($this->actions->getValue($action, 'moduleStyles'));
     } else {
         $out->addModuleStyles(array('mediawiki.ui', 'mediawiki.ui.anchor', 'mediawiki.ui.button', 'mediawiki.ui.input', 'mediawiki.ui.icon', 'mediawiki.ui.text', 'ext.flow.styles.base', 'ext.flow.mediawiki.ui.tooltips', 'ext.flow.mediawiki.ui.form', 'ext.flow.mediawiki.ui.modal', 'ext.flow.mediawiki.ui.text', 'oojs-ui.styles.icons', 'oojs-ui.styles.icons-layout', 'oojs-ui.styles.icons-interactions', 'ext.flow.board.styles', 'ext.flow.board.topic.styles', 'oojs-ui.styles.icons', 'oojs-ui.styles.icons-alerts', 'oojs-ui.styles.icons-content', 'oojs-ui.styles.icons-layout', 'oojs-ui.styles.icons-movement', 'oojs-ui.styles.icons-indicators', 'oojs-ui.styles.icons-editing-core', 'oojs-ui.styles.icons-moderation', 'oojs-ui.styles.textures'));
     }
     // Add Parsoid modules if necessary
     Parsoid\Utils::onFlowAddModules($out);
     // Allow other extensions to add modules
     Hooks::run('FlowAddModules', array($out));
 }
 /**
  * Check if a user is allowed to perform a certain action, against the latest
  * root(topic) post related to the provided revision.  This is required for
  * things like preventing replies to locked topics.
  *
  * @param AbstractRevision $root
  * @param string $action
  * @return bool
  */
 public function isRootAllowed(AbstractRevision $root, $action)
 {
     // If the `root-permissions` key is not set then it is allowed
     if (!$this->actions->hasValue($action, 'root-permissions')) {
         return true;
     }
     $permission = $this->getPermission($root, $action, 'root-permissions');
     // If `root-permissions` is defined but not for the current state
     // then action is denied
     if ($permission === null) {
         return false;
     }
     return call_user_func_array(array($this->user, 'isAllowedAny'), (array) $permission);
 }