/**
  * Get a flexible interface to generate new ProfileTemplateField
  *
  * @param string $user_prefix      A identifier provided by the programmer
  *                                 to recognise it's generated HTML form
  * @return string HTML markup
  */
 public static function getCreateFieldUI($user_prefix, $title = null)
 {
     $db = AbstractDb::getObject();
     // Init values
     $html = "";
     $html .= "<fieldset class='admin_container Content'>\n";
     if (!empty($title)) {
         $html .= "<legend>{$title}</legend>\n";
     }
     $availableContentTypeFilters = ContentTypeFilter::getAllContentTypeFilters();
     $name = "get_new_profile_template_field_{$user_prefix}_content_type_filter";
     $i = 0;
     $tab = array();
     foreach ($availableContentTypeFilters as $filter) {
         $tab[$i][0] = $filter->getId();
         $tab[$i][1] = $filter->getLabel() == null ? "[" . _("No label") . "] - " . $filter->getId() : $filter->getLabel();
         $i++;
     }
     if (count($tab) > 1) {
         $label = _("Add new profile template field filtered by") . ": ";
         $html .= "<div class='admin_element_data content_add'>";
         $html .= $label;
         $html .= FormSelectGenerator::generateFromArray($tab, null, $name, null, false);
         $html .= "</div>";
     } else {
         if (count($tab) == 1) {
             $html .= '<input type="hidden" name="' . $name . '" value="' . $tab[0][0] . '">';
         } else {
             $html .= "<div class='errormsg'>" . _("Sorry, no content type filter exists.") . "</div>\n";
         }
     }
     $name = "get_new_profile_template_field_{$user_prefix}_add";
     if (count($tab) >= 1) {
         $value = _("Add");
         $html .= "<div class='admin_element_tools'>";
         $html .= '<input type="submit" class="submit" name="' . $name . '" value="' . $value . '">';
         $html .= "</div>";
     }
     $html .= "</fieldset>\n";
     return $html;
 }