/**
  * Removes a module from the namespace
  * @param Module $module Module to remove
  * @return null
  */
 public function removeModule(Module $module)
 {
     $name = $module->getName();
     if (array_key_exists($name, $this->modules)) {
         unset($this->modules[$name]);
     }
 }
 /**
  * Gets the HTML to represent a module
  * @param zibo\repository\model\Module $module
  * @return string
  */
 private function getModuleHtml(Module $module)
 {
     $value = $module->getName();
     if ($this->action) {
         $action = $this->action . $value;
         $anchor = new Anchor($value, $action);
         $value = $anchor->getHtml();
     }
     $value = $this->image . $value;
     $value .= '<div class="info">';
     $value .= $this->translator->translate(self::TRANSLATION_VERSION, array('version' => $module->getVersion()));
     $value .= '</div>';
     return $value;
 }
 /**
  * Gets the detail view of a module
  * @param Module $module Module to display in the view
  * @return zibo\repository\view\ModuleView
  */
 private function getModuleView(Module $module)
 {
     $namespace = $module->getNamespace();
     $name = $module->getName();
     $basePath = $this->request->getBasePath() . '/';
     $repositoryUrl = $basePath . self::ACTION_NAMESPACE . '/' . $namespace;
     $moduleUrl = $basePath . self::ACTION_MODULE . '/';
     $downloadUrl = $basePath . self::ACTION_DOWNLOAD . '/' . $namespace . '/' . $name . '/';
     $table = new ModuleVersionTable($module->getVersions(), $downloadUrl, $moduleUrl . $namespace . '/' . $name);
     $this->breadcrumbs->addBreadcrumb($repositoryUrl, $namespace);
     $this->breadcrumbs->addBreadcrumb($moduleUrl . '/' . $namespace . '/' . $name, $name);
     return new ModuleView($module, $table, $repositoryUrl, $moduleUrl, self::TRANSLATION_DOWNLOAD, $downloadUrl . $module->getVersion());
 }