Esempio n. 1
0
 /**
  * Constructor
  *
  * Do not use directly, call factory method in base class instead
  * @access private
  * @param    string  $item_id
  */
 function RangeTreeObjectInst($item_id)
 {
     parent::RangeTreeObject($item_id);
     //calling the baseclass constructor
     $this->initItemDetail();
     $this->item_data_mapping = array('Strasse' => _("Straße"), 'Plz' => _("Ort"), 'telefon' => _("Tel."), 'fax' => _("Fax"), 'url' => _("Homepage"), 'email' => _("Kontakt"));
     $this->item_data['type_num'] = $this->item_data['type'];
     $this->item_data['type'] = $this->item_data['type'] ? $GLOBALS['INST_TYPE'][$this->item_data['type']]['name'] : $GLOBALS['INST_TYPE'][1]['name'];
 }
Esempio n. 2
0
 function getItemContent($item_id)
 {
     $content = "\n<table width=\"90%\" cellpadding=\"2\" cellspacing=\"2\" align=\"center\" style=\"font-size:10pt\">";
     if ($item_id == "root") {
         $content .= "\n<tr><td class=\"table_header_bold\" align=\"left\">" . htmlReady($this->tree->root_name) . " </td></tr>";
         $content .= "\n<tr><td class=\"blank\" align=\"left\">" . htmlReady($this->root_content) . " </td></tr>";
         $content .= "\n</table>";
         return $content;
     }
     $range_object = RangeTreeObject::GetInstance($item_id);
     $name = $range_object->item_data['type'] ? $range_object->item_data['type'] . ": " : "";
     $name .= $range_object->item_data['name'];
     $content .= "\n<tr><td class=\"table_header_bold\" align=\"left\">" . htmlReady($name) . " </td></tr>";
     if (is_array($range_object->item_data_mapping)) {
         $content .= "\n<tr><td class=\"blank\" align=\"left\">";
         foreach ($range_object->item_data_mapping as $key => $value) {
             if ($range_object->item_data[$key]) {
                 $content .= "<b>" . htmlReady($value) . ":</b>&nbsp;";
                 $content .= formatLinks($range_object->item_data[$key]) . "&nbsp; ";
             }
         }
         $content .= "</td></tr><tr><td class=\"blank\" align=\"left\">" . "<a href=\"" . URLHelper::getLink("dispatch.php/institute/overview?auswahl=" . $range_object->item_data['studip_object_id']) . "\"" . tooltip(_("Seite dieser Einrichtung in Stud.IP aufrufen")) . ">" . htmlReady($range_object->item_data['name']) . "</a>&nbsp;" . _("in Stud.IP") . "</td></tr>";
     } elseif (!$range_object->item_data['studip_object']) {
         $content .= "\n<tr><td class=\"blank\" align=\"left\">" . _("Dieses Element ist keine Stud.IP-Einrichtung, es hat daher keine Grunddaten.") . "</td></tr>";
     } else {
         $content .= "\n<tr><td class=\"blank\" align=\"left\">" . _("Keine Grunddaten vorhanden!") . "</td></tr>";
     }
     $content .= "\n<tr><td>&nbsp;</td></tr>";
     $kategorien =& $range_object->getCategories();
     if ($kategorien->numRows) {
         while ($kategorien->nextRow()) {
             $content .= "\n<tr><td class=\"table_header_bold\">" . htmlReady($kategorien->getField("name")) . "</td></tr>";
             $content .= "\n<tr><td class=\"blank\">" . formatReady($kategorien->getField("content")) . "</td></tr>";
         }
     } else {
         $content .= "\n<tr><td class=\"blank\">" . _("Keine weiteren Daten vorhanden!") . "</td></tr>";
     }
     $content .= "</table>";
     return $content;
 }
 function showContent ($item_id) {
     echo "<table" . $this->config->getAttributes("RangeTreeLevelName", "table");
     echo ">\n<tr><td" . $this->config->getAttributes("RangeTreeLevelName", "td") . ">";
     echo "<font" . $this->config->getAttributes("RangeTreeLevelName", "font") . ">";
     $alias_names = $this->config->getValue("RangeTreeLevelName", "aliases");
     $range_object = RangeTreeObject::GetInstance($item_id);
     if ($range_object->item_data['type'])
         $name = $alias_names[$range_object->item_data['type_num'] - 1] . " ";
     $name .= $range_object->item_data['name'];
     echo htmlReady($name) ."</font></td></tr>\n</table>\n";
     if (is_array($range_object->item_data_mapping)) {
         echo "</td></tr><tr><td>\n";
         echo "<table" . $this->config->getAttributes("RangeTreeLevelContent", "table");
         echo ">\n<tr><td" . $this->config->getAttributes("RangeTreeLevelContent", "td") . ">";
         $alias_mapping = $this->config->getValue("RangeTreeLevelContent", "mapping");
         $aliases = $this->config->getValue("RangeTreeLevelContent", "aliases");
         foreach ($alias_mapping as $position => $key) {
             if ($range_object->item_data[$key]) {
                 echo "<font" . $this->config->getAttributes("RangeTreeLevelContent", "fontalias") . ">";
                 echo htmlReady($aliases[$position]) . "&nbsp;</font>";
                 echo "<font" . $this->config->getAttributes("RangeTreeLevelContent", "fontdata") . ">";
                 echo formatLinks($range_object->item_data[$key]) . "&nbsp; </font>";
             }
         }
         echo "</td></tr></table>\n";
     }
 }
 public function doSearch()
 {
     if (!count($this->params)) {
         return false;
     }
     $this->params = array_map('mysql_escape_string', $this->params);
     $clause = "";
     $and_clause = "";
     $this->search_result = new DbSnapshot();
     $combination = $this->params['combination'];
     $view = DbView::getView('sem_tree');
     if (isset($this->params['sem']) && $this->params['sem'] != 'all') {
         $sem_number = (int) $this->params['sem'];
         $clause = " HAVING (sem_number <= {$sem_number} AND (sem_number_end >= {$sem_number} OR sem_number_end = -1)) ";
     }
     if (isset($this->params['category']) && $this->params['category'] != 'all') {
         foreach ($GLOBALS['SEM_TYPE'] as $type_key => $type_value) {
             if ($type_value['class'] == $this->params['category']) {
                 $sem_types[] = $type_key;
             }
         }
     }
     if (isset($this->params['type']) && $this->params['type'] != 'all') {
         unset($sem_types);
         $sem_types[0] = $this->params['type'];
     }
     if (is_array($sem_types)) {
         $clause = " AND c.status IN('" . join("','", $sem_types) . "') " . $clause;
     }
     if ($this->params['scope_choose'] && $this->params['scope_choose'] != 'root') {
         $sem_tree = TreeAbstract::GetInstance("StudipSemTree", false);
         $view->params[0] = is_array($sem_types) ? $sem_types : $sem_tree->sem_status;
         $view->params[1] = $this->visible_only ? "c.visible=1" : "1";
         $view->params[2] = $sem_tree->getKidsKids($this->params['scope_choose']);
         $view->params[2][] = $this->params['scope_choose'];
         $view->params[3] = $clause;
         $snap = new DbSnapshot($view->get_query("view:SEM_TREE_GET_SEMIDS"));
         if ($snap->numRows) {
             $clause = " AND c.seminar_id IN('" . join("','", $snap->getRows("seminar_id")) . "')" . $clause;
         } else {
             return 0;
         }
         unset($snap);
     }
     if ($this->params['range_choose'] && $this->params['range_choose'] != 'root') {
         $range_object = RangeTreeObject::GetInstance($this->params['range_choose']);
         $view->params[0] = $range_object->getAllObjectKids();
         $view->params[0][] = $range_object->item_data['studip_object_id'];
         $view->params[1] = $this->visible_only ? " AND c.visible=1 " : "";
         $view->params[2] = $clause;
         $snap = new DbSnapshot($view->get_query("view:SEM_INST_GET_SEM"));
         if ($snap->numRows) {
             $clause = " AND c.seminar_id IN('" . join("','", $snap->getRows("Seminar_id")) . "')" . $clause;
         } else {
             return 0;
         }
         unset($snap);
     }
     if (isset($this->params['lecturer']) && strlen($this->params['lecturer']) > 2) {
         $view->params[0] = "%" . trim($this->params['lecturer']) . "%";
         $view->params[1] = "%" . trim($this->params['lecturer']) . "%";
         $view->params[2] = "%" . trim($this->params['lecturer']) . "%";
         $view->params[3] = "%" . trim($this->params['lecturer']) . "%";
         $view->params[4] = "%" . trim($this->params['lecturer']) . "%";
         $result = $view->get_query("view:SEM_SEARCH_LECTURER");
         $lecturers = array();
         while ($result->next_record()) {
             $lecturers[] = $result->f('user_id');
         }
         if (count($lecturers)) {
             $view->params[0] = $this->visible_only ? "c.visible=1" : "1";
             $view->params[1] = $lecturers;
             $view->params[2] = $clause;
             $snap = new DbSnapshot($view->get_query("view:SEM_SEARCH_LECTURER_ID"));
             $this->search_result = $snap;
             $this->found_rows = $this->search_result->numRows;
         }
     }
     if ($combination == "AND" && $this->search_result->numRows) {
         $and_clause = " AND c.seminar_id IN('" . join("','", $this->search_result->getRows("seminar_id")) . "')";
     }
     if (isset($this->params['title']) && strlen($this->params['title']) > 2 || isset($this->params['sub_title']) && strlen($this->params['sub_title']) > 2 || isset($this->params['number']) && strlen($this->params['number']) > 2 || isset($this->params['comment']) && strlen($this->params['comment']) > 2) {
         $toFilter = explode(" ", $this->params['title']);
         $search_for = "(Name LIKE '%" . implode("%' AND Name LIKE '%", $toFilter) . "%')";
         $view->params[0] .= $this->params['title'] ? $search_for . " " : " ";
         $view->params[0] .= $this->params['title'] && $this->params['sub_title'] ? $combination : " ";
         $view->params[0] .= $this->params['sub_title'] ? " Untertitel LIKE '%" . trim($this->params['sub_title']) . "%' " : " ";
         $view->params[0] .= ($this->params['title'] || $this->params['sub_title']) && $this->params['comment'] ? $combination : " ";
         $view->params[0] .= $this->params['comment'] ? " Beschreibung LIKE '%" . trim($this->params['comment']) . "%' " : " ";
         $view->params[0] .= ($this->params['title'] || $this->params['sub_title'] || $this->params['comment']) && $this->params['number'] ? $combination : " ";
         $view->params[0] .= $this->params['number'] ? " VeranstaltungsNummer LIKE '%" . trim($this->params['number']) . "%' " : " ";
         $view->params[0] = ($this->visible_only ? " c.visible=1 AND " : "") . "(" . $view->params[0] . ")";
         $view->params[1] = $and_clause . $clause;
         $snap = new DbSnapshot($view->get_query("view:SEM_SEARCH_SEM"));
         if ($this->found_rows === false) {
             $this->search_result = $snap;
         } else {
             $this->search_result->mergeSnapshot($snap, "seminar_id", $combination);
         }
         $this->found_rows = $this->search_result->numRows;
     }
     if ($combination == "AND" && $this->search_result->numRows) {
         $and_clause = " AND c.seminar_id IN('" . join("','", $this->search_result->getRows("seminar_id")) . "')";
     }
     if (isset($this->params['scope']) && strlen($this->params['scope']) > 2) {
         $view->params[0] = $this->visible_only ? "c.visible=1" : "1";
         $view->params[1] = "%" . trim($this->params['scope']) . "%";
         $view->params[2] = $and_clause . $clause;
         $snap = new DbSnapshot($view->get_query("view:SEM_TREE_SEARCH_SEM"));
         if ($this->found_rows === false) {
             $this->search_result = $snap;
         } else {
             $this->search_result->mergeSnapshot($snap, "seminar_id", $combination);
         }
         $this->found_rows = $this->search_result->numRows;
     }
     return $this->found_rows;
 }
 function get_sem_range_tree($item_id, $with_kids)
 {
     $range_object = RangeTreeObject::GetInstance($item_id);
     if ($with_kids) {
         $inst_ids = $range_object->getAllObjectKids();
     }
     $inst_ids[] = $range_object->item_data['studip_object_id'];
     $db_view = DbView::getView('sem_tree');
     $db_view->params[0] = $inst_ids;
     $db_view->params[1] = ' AND c.visible=1';
     $db_view->params[1] .= is_array($this->sem_browse_data['sem_status']) ? " AND c.status IN('" . join("','", $this->sem_browse_data['sem_status']) . "')" : "";
     $db_view->params[2] = is_array($this->sem_number) ? " HAVING sem_number IN (" . join(",", $this->sem_number) . ") OR (sem_number <= " . $this->sem_number[0] . "  AND (sem_number_end >= " . $this->sem_number[0] . " OR sem_number_end = -1)) " : '';
     $db_snap = new DbSnapshot($db_view->get_query("view:SEM_INST_GET_SEM"));
     if ($db_snap->numRows) {
         $sem_ids = $db_snap->getRows("Seminar_id");
         $this->sem_browse_data['search_result'] = array_flip($sem_ids);
     } else {
         $this->sem_browse_data['search_result'] = array();
     }
 }
/**
* Exports data of the given range.
*
* This function calls the functions that export the data sepcified by the given $export_range.
* It calls the function output_data afterwards.
*
* @access   public
* @param        string  $range_id   Stud.IP-range_id for export
*/
function export_range($range_id)
{
    global $o_mode, $range_name, $ex_person_details, $persons, $ex_sem;
    // Ist die Range-ID eine Einrichtungs-ID?
    $query = "SELECT Name FROM Institute WHERE Institut_id = ?";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    $name = $statement->fetchColumn();
    if ($name) {
        $range_name = $name;
        output_data(xml_header(), $o_mode);
        $output_startet = true;
        export_inst($range_id);
    }
    // Ist die Range-ID eine Fakultaets-ID? Dann auch untergeordnete Institute exportieren!
    $query = "SELECT Name, Institut_id\n              FROM Institute\n              WHERE fakultaets_id = ? AND Institut_id != fakultaets_id";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
        if ($row['Name'] != '') {
            // output_data ( xml_header(), $o_mode);
            export_inst($row['Institut_id']);
        }
    }
    // Ist die Range-ID eine Seminar-ID?
    $query = "SELECT Name, Seminar_id, Institut_id\n              FROM seminare\n              WHERE Seminar_id = ?";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    $row = $statement->fetch(PDO::FETCH_ASSOC);
    if ($row && $row['Name'] != '') {
        $range_name = $row['Name'];
        if (!$output_startet) {
            output_data(xml_header(), $o_mode);
            $output_startet = true;
        }
        export_inst($row['Institut_id'], $row['Seminar_id']);
    }
    //  Ist die Range-ID ein Range-Tree-Item?
    if ($range_id != 'root') {
        $tree_object = new RangeTreeObject($range_id);
        $range_name = $tree_object->item_data["name"];
        // Tree-Item ist ein Institut:
        if ($tree_object->item_data['studip_object'] == 'inst') {
            if (!$output_startet) {
                output_data(xml_header(), $o_mode);
                $output_startet = true;
            }
            export_inst($tree_object->item_data['studip_object_id']);
        }
        // Tree-Item hat Institute als Kinder:
        $inst_array = $tree_object->GetInstKids();
        if (count($inst_array) > 0) {
            if (!$output_startet) {
                output_data(xml_header(), $o_mode);
                $output_startet = true;
            }
            while (list($key, $inst_ids) = each($inst_array)) {
                export_inst($inst_ids);
            }
        }
    }
    $query = "SELECT 1 FROM sem_tree WHERE sem_tree_id = ?";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    if ($statement->fetchColumn() || $range_id == 'root') {
        if (!$output_startet) {
            output_data(xml_header(), $o_mode);
            $output_startet = true;
        }
        if (isset($ex_sem) && ($semester = Semester::find($ex_sem))) {
            $args = array('sem_number' => array(SemesterData::GetSemesterIndexById($ex_sem)));
        } else {
            $args = array();
        }
        if ($range_id != 'root') {
            $the_tree = TreeAbstract::GetInstance('StudipSemTree', $args);
            $sem_ids = array_unique($the_tree->getSemIds($range_id, true));
        }
        if (is_array($sem_ids) || $range_id == 'root') {
            if (is_array($sem_ids)) {
                $query = "SELECT DISTINCT Institut_id\n                          FROM seminare\n                          WHERE Seminar_id IN (?)";
                $statement = DBManager::get()->prepare($query);
                $statement->execute(array($sem_ids));
                $to_export = $statement->fetchAll(PDO::FETCH_COLUMN);
            } else {
                $sem_ids = 'root';
                $query = "SELECT DISTINCT Institut_id\n                          FROM seminare\n                          INNER JOIN seminar_sem_tree USING (seminar_id)";
                if ($semester) {
                    $query .= " WHERE seminare.start_time <= :begin\n                                  AND (:begin <= (seminare.start_time + seminare.duration_time) OR\n                                       seminare.duration_time = -1)";
                    $statement = DBManager::get()->prepare($query);
                    $statement->bindValue(':begin', $semester->beginn);
                    $statement->execute();
                } else {
                    $statement = DBManager::get()->query($query);
                }
                $to_export = $statement->fetchAll(PDO::FETCH_COLUMN);
            }
            foreach ($to_export as $inst) {
                export_inst($inst, $sem_ids);
            }
        }
    }
    if ($ex_person_details && is_array($persons)) {
        export_persons(array_keys($persons));
    }
    output_data(xml_footer(), $o_mode, $flush = true);
}
 function getTooltip($item_id)
 {
     if ($item_id == "root") {
         $ret = $this->root_content ? $this->root_content : _("Keine weitere Info vorhanden");
     } else {
         $range_object = RangeTreeObject::GetInstance($item_id);
         if (is_array($range_object->item_data_mapping)) {
             foreach ($range_object->item_data_mapping as $key => $value) {
                 if ($range_object->item_data[$key]) {
                     $info .= $value . ": ";
                     $info .= $range_object->item_data[$key] . " ";
                 }
             }
         }
         $ret = $info ? $info : _("Keine weitere Info vorhanden");
     }
     return $ret;
 }
 function getItemContent($item_id)
 {
     if ($item_id == $this->edit_item_id) {
         return $this->getEditItemContent();
     }
     if ($item_id == $this->move_item_id) {
         $this->msg[$item_id] = "info§" . sprintf(_("Dieses Element wurde zum Verschieben markiert. Bitte wählen Sie ein Einfügesymbol %s aus, um das Element zu verschieben."), Icon::create('arr_2right', 'sort', ['title' => "Einfügesymbol"])->asImg(16, ["alt" => "Einfügesymbol"]));
     }
     $content = "\n<table width=\"90%\" cellpadding=\"2\" cellspacing=\"2\" align=\"center\" style=\"font-size:10pt\">";
     $content .= $this->getItemMessage($item_id);
     $content .= "\n<tr><td align=\"center\">";
     if ($this->isItemAdmin($item_id)) {
         $content .= LinkButton::create(_("Neues Objekt"), URLHelper::getURL($this->getSelf("cmd=NewItem&item_id={$item_id}")), array('title' => _("Innerhalb dieser Ebene ein neues Element einfügen")));
     }
     if ($this->isParentAdmin($item_id) && $item_id != $this->start_item_id && $item_id != "root") {
         $content .= LinkButton::create(_("Bearbeiten"), URLHelper::getURL($this->getSelf("cmd=EditItem&item_id={$item_id}")));
         $content .= LinkButton::create(_("Löschen"), URLHelper::getURL($this->getSelf("cmd=AssertDeleteItem&item_id={$item_id}")));
         if ($this->move_item_id == $item_id && $this->mode == "MoveItem") {
             $content .= LinkButton::create(_("Abbrechen"), URLHelper::getURL($this->getSelf("cmd=Cancel&item_id={$item_id}")));
         } else {
             $content .= LinkButton::create(_("Verschieben"), URLHelper::getURL($this->getSelf("cmd=MoveItem&item_id={$item_id}")));
         }
     }
     $content .= "</td></tr></table>";
     $content .= "\n<table width=\"90%\" cellpadding=\"2\" cellspacing=\"2\" align=\"center\" style=\"font-size:10pt\">";
     if ($item_id == "root") {
         if ($this->isItemAdmin($item_id)) {
             $view = DbView::getView('range_tree');
             $rs = $view->get_query("SELECT i1.Name,i1.Institut_id,COUNT(i2.Institut_id) as num FROM Institute i1 LEFT JOIN Institute i2 ON i1.Institut_id = i2.fakultaets_id AND i2.fakultaets_id<>i2.Institut_id WHERE i1.fakultaets_id=i1.Institut_id GROUP BY i1.Institut_id ORDER BY Name");
             $content .= "\n<tr><td align=\"center\">";
             $content .= "\n<form action=\"" . URLHelper::getLink($this->getSelf("cmd=InsertFak")) . "\" method=\"post\">" . CSRFProtection::tokenTag() . _("Stud.IP Fakultät einfügen:") . "&nbsp;\n<select style=\"width:300px;vertical-align:middle;\" name=\"insert_fak\">";
             while ($rs->next_record()) {
                 $content .= "\n<option value=\"" . $rs->f("Institut_id") . "\">" . htmlReady(my_substr($rs->f("Name") . '(' . $rs->f('num') . ')', 0, 60)) . "</option>";
             }
             $content .= "</select>" . Button::create(_("Fakultät einfügen")) . "</form>";
             $content .= " </td></tr>";
         }
         $content .= "\n<tr><td class=\"table_header_bold\" align=\"left\">" . htmlReady($this->tree->root_name) . " </td></tr>";
         $content .= "\n<tr><td class=\"blank\" align=\"left\">" . htmlReady($this->root_content) . " </td></tr>";
         $content .= "\n</table>";
         return $content;
     }
     $range_object = RangeTreeObject::GetInstance($item_id);
     $name = $range_object->item_data['type'] ? $range_object->item_data['type'] . ": " : "";
     $name .= $range_object->item_data['name'];
     $content .= "\n<tr><td class=\"table_header_bold\" align=\"left\" style=\"font-size:10pt\">" . htmlReady($name) . " </td></tr>";
     if (is_array($range_object->item_data_mapping)) {
         $content .= "\n<tr><td class=\"blank\" align=\"left\" style=\"font-size:10pt\">";
         foreach ($range_object->item_data_mapping as $key => $value) {
             if ($range_object->item_data[$key]) {
                 $content .= "<b>" . htmlReady($value) . ":</b>&nbsp;";
                 $content .= formatLinks($range_object->item_data[$key]) . "&nbsp; ";
             }
         }
         $content .= "&nbsp;";
     } elseif (!$range_object->item_data['studip_object']) {
         $content .= "\n<tr><td class=\"blank\" align=\"left\" style=\"font-size:10pt\">" . _("Dieses Element ist keine Stud.IP-Einrichtung, es hat daher keine Grunddaten.");
     } else {
         $content .= "\n<tr><td class=\"blank\" align=\"left\" style=\"font-size:10pt\">" . _("Keine Grunddaten vorhanden!");
     }
     $content .= "\n<div class=\"blank\" align=\"left\" style=\"font-size:10pt\"><b>" . _("Mitarbeiter:") . "</b> " . $range_object->getNumStaff() . "</b></div>";
     if ($this->isItemAdmin($item_id) && $range_object->item_data['studip_object']) {
         $content .= "\n<div class=\"blank\" align=\"center\" style=\"font-size:10pt\">";
         $content .= LinkButton::create(_("Grunddaten in Stud.IP bearbeiten"), "dispatch.php/institute/basicdata/index?admin_inst_id=" . $range_object->item_data['studip_object_id']);
         $content .= "</div>";
     }
     $content .= "</td></tr><tr><td>&nbsp;</td></tr>";
     if ($this->mode == "NewCat" && $this->edit_cat_item_id == $item_id) {
         $categories =& $this->edit_cat_snap;
     } else {
         $categories =& $range_object->getCategories();
     }
     if (!$this->isItemAdmin($item_id)) {
         if ($categories->numRows) {
             while ($categories->nextRow()) {
                 $content .= "\n<tr><td class=\"table_header_bold\" style=\"font-size:10pt\">" . formatReady($categories->getField("name")) . "</td></tr>";
                 $content .= "\n<tr><td class=\"blank\" style=\"font-size:10pt\">" . formatReady($categories->getField("content")) . "</td></tr>";
             }
         } else {
             $content .= "\n<tr><td class=\"blank\" style=\"font-size:10pt\">" . _("Keine weiteren Daten vorhanden!") . "</td></tr>";
         }
     } else {
         $content .= "<tr><td class=\"blank\" style=\"font-size:10pt\">" . $this->getEditCatContent($item_id, $categories) . "</td></tr>";
     }
     $content .= "</table>";
     return $content;
 }