/** * Displays the body of a folder including the description, changeform, subfolder and files * */ function display_folder_body($folder_id, $open, $change, $move, $upload, $refresh=FALSE, $filelink="", $anchor_id, $level = 0) { global $_fullname_sql, $SessionSeminar, $SemUserStatus, $SessSemName, $user, $perm, $rechte, $countfolder; $db = DBManager::get(); //Einbinden einer Klasse, die Informationen über den ganzen Baum enthält $folder_tree = TreeAbstract::GetInstance('StudipDocumentTree', array('range_id' => $SessionSeminar)); //Hole alle Informationen, die es über $folder_id gibt $query = "SELECT ". $_fullname_sql['full'] ." AS fullname , username, folder_id, a.range_id, a.user_id, name, a.description, a.mkdate, a.chdate FROM folder a LEFT JOIN auth_user_md5 USING (user_id) LEFT JOIN user_info USING (user_id) WHERE a.folder_id = '$folder_id' ORDER BY a.name, a.chdate"; $result = $db->query($query)->fetch(); $document_count = doc_count($folder_id); $super_folder = $folder_tree->getNextSuperFolder($folder_id); $is_issue_folder = ((count($folder_tree->getParents($folder_id)) > 1) && IssueDB::isIssue($result["range_id"])); if ($is_issue_folder) { $dates_for_issue = IssueDB::getDatesforIssue($result['range_id']); } print "<table cellpadding=0 border=0 cellspacing=0 width=\"100%\">"; //Ausgabe der Optionen zu dem Ordner mit Beschreibung, Knöpfen und PiPaPo print "<tr>"; if ((($document_count > 0) || ($folder_tree->hasKids($folder_id))) && ($folder_tree->isReadable($folder_id))) { print "<td style=\"background-image: url(".Assets::image_path('datatree_grau.gif') . "); background-repeat: repeat-y;\">"; print Assets::img('datatree_grau.gif'); print "</td>"; } else { print "<td class=\"printcontent\"> </td>"; } print "<td width=100% class=\"printcontent\" style=\"font-align: center\">"; $content=''; if ($super_folder){ $content .= Icon::create('lock-locked', 'inactive')->asImg(['class' => 'texttop']) . ' ' . sprintf(_("Dieser Ordner ist nicht zugänglich, da der übergeordnete Ordner \"%s\" nicht lesbar oder nicht sichtbar ist!"), htmlReady($folder_tree->getValue($super_folder,'name'))) . '<hr>'; } if ($folder_tree->isExerciseFolder($folder_id)){ $content .= Icon::create('edit', 'inactive')->asImg(['class' => 'texttop']) . ' ' . _("Dieser Ordner ist ein Hausaufgabenordner. Es können nur Dateien eingestellt werden.") . (!$rechte ? _("Sie selbst haben folgende Dateien in diesen Ordner eingestellt:") . '<br><b>' . htmlReady(join('; ', get_user_documents_in_folder($folder_id, $GLOBALS['user']->id))).'</b>' : '') . '<hr>'; } if ($is_issue_folder) { $dates = array(); foreach ($dates_for_issue as $date) { $dates[] = strftime("%x", $date['date']); } $content .= _("Dieser Ordner ist ein themenbezogener Dateiordner."); if(count($dates)){ $content .= ' ' ._("Folgende Termine sind diesem Thema zugeordnet:") . '<br><b>' . htmlReady(join('; ', $dates)).'</b>'; } $content .= '<hr>'; } $is_group_folder = $folder_tree->isGroupFolder($folder_id); if ($is_group_folder){ $content .= sprintf( _('Dieser Ordner gehört der Gruppe <b>%s</b>. Nur Mitglieder dieser Gruppe können diesen Ordner sehen.' . ' Dieser Ordner kann nicht verschoben oder kopiert werden.'), htmlReady(GetStatusgruppeName($result["range_id"])) ) . '<hr>'; } //Contentbereich erstellen if ($change == $folder_id) { //Aenderungsmodus, zweiter Teil $content .= '<textarea name="change_description"' . ' style="width:98%" class="add_toolbar wysiwyg"' . ' aria-label="Beschreibung des Ordners eingeben"' . ' rows="3">' . formatReady($result["description"]) . '</textarea>'; if($rechte){ $content .= '<div>'; if ($folder_tree->permissions_activated){ $content.= "\n<label><input style=\"vertical-align:middle\" type=\"checkbox\" value=\"1\" ".($folder_tree->isReadable($folder_id) ? "CHECKED" : "" ) . " name=\"perm_read\"> "; $content.= '<b>r</b> - ' . _("Lesen (Dateien können heruntergeladen werden)"); $content.= "</label>\n<br><label><input style=\"vertical-align:middle\" type=\"checkbox\" value=\"1\" ".($folder_tree->isWritable($folder_id) ? "CHECKED" : "" ) . " name=\"perm_write\"> "; $content.= '<b>w</b> - ' . _("Schreiben (Dateien können heraufgeladen werden)"); $content.= "</label>\n<br><label><input style=\"vertical-align:middle\" type=\"checkbox\" value=\"1\" ".($folder_tree->isExecutable($folder_id) ? "CHECKED" : "" ) . " name=\"perm_exec\"> "; $content.= '<b>x</b> - ' . _("Sichtbarkeit (Ordner wird angezeigt)") . '</label>'; } if($level == 0 && $folder_tree->entity_type == 'sem'){ $content .= "\n<br><label><input style=\"vertical-align:middle\" type=\"checkbox\" value=\"1\" ".($folder_tree->checkCreateFolder($folder_id) ? "CHECKED" : "" ) . " name=\"perm_folder\"> "; $content .= '<b>f</b> - ' . _("Ordner erstellen (Alle Nutzer können Ordner erstellen)") . '</label>'; } $content .= '</div>'; } $content .= '<div class="button-group">'; $content .= Button::createAccept(_("Übernehmen")); $content .= Button::createCancel(_("Abbrechen"), "cancel"); $content .= '</div>'; $content.= "\n<input type=\"hidden\" name=\"open\" value=\"".$folder_id."_sc_\">"; $content.="\n<input type=\"hidden\" name=\"type\" value=\"1\">"; } elseif ($result["description"]) $content .= formatReady($result["description"]); else $content .= _("Keine Beschreibung vorhanden"); if ($move == $result["folder_id"]){ $content .= "<br>" . sprintf(_("Dieser Ordner wurde zum Verschieben / Kopieren markiert. Bitte wählen Sie das Einfügen-Symbol %s, um ihn in den gewünschten Ordner zu verschieben."), Icon::create('arr_2right', 'sort', ['title' => _("Klicken Sie auf dieses Symbol, um diesen Ordner in einen anderen Ordner einzufügen.")]))->asImg(); if ($rechte) { $content .= _("Wenn Sie den Ordner in eine andere Veranstaltung verschieben / kopieren möchten, wählen Sie die gewünschte Veranstaltung oben auf der Seite aus."); } } if ($upload == $folder_id) { $content .= form($refresh); } // Abfrage ob Dateilink eingeleitet if ($filelink == $folder_id) { $content .= link_item($folder_id); } $content.= "\n"; $edit=''; //Editbereich erstellen if (($change != $folder_id) && ($upload != $folder_id) && ($filelink != $folder_id)) { if ($perm->have_studip_perm('autor', $SessionSeminar) && $folder_tree->isWritable($folder_id, $user->id)) # Knopf: hochladen $edit .= LinkButton::create(_("Hochladen"), URLHelper::getURL("?open=".$folder_id."_u_&rand=".rand()."#anker")); # Knopf: Datei verlinken if ($rechte) { $edit .= LinkButton::create(_("Datei verlinken"), URLHelper::getURL("?open=".$folder_id."_l_&rand=".rand()."#anker")); } # Knopf: Ordner als ZIP if ($document_count && $folder_tree->isReadable($folder_id, $user->id)) { $edit .= LinkButton::create(_("Ordner als ZIP"), URLHelper::getURL("?folderzip=".$folder_id)); } if ($perm->have_studip_perm('autor', $SessionSeminar) && $folder_tree->checkCreateFolder($folder_id, $user->id)) { if ($folder_tree->isWritable($folder_id, $user->id) && !$folder_tree->isExerciseFolder($folder_id, $user->id)) { # Knopf: neuer Ordner $edit .= LinkButton::create(_("Neuer Ordner"), URLHelper::getURL("?open=".$folder_id."_n_#anker")); # Knopf: ZIP hochladen if ($rechte && get_config('ZIP_UPLOAD_ENABLE')) { $edit .= LinkButton::create(_("ZIP hochladen"), URLHelper::getURL("?open=".$folder_id."_z_&rand=".rand()."#anker")); } } # Knopf: löschen if ($rechte || ( !$document_count && $level !=0 && ( $folder_tree->isWritable($folder_id, $user->id) && $folder_tree->isWritable($folder_tree->getValue($folder_id, 'parent_id'), $user->id) && !$folder_tree->isExerciseFolder($folder_id, $user->id) ) ) ) { $edit .= LinkButton::create(_("Löschen"), URLHelper::getURL("?open=".$folder_id."_d_")); } # Knopf: bearbeiten if ($folder_tree->isWritable($folder_id, $user->id) && !$folder_tree->isExerciseFolder($folder_id, $user->id)) { $edit .= LinkButton::create(_("Bearbeiten"), URLHelper::getURL("?open=".$folder_id."_c_#anker")); } # verschieben if ( ($rechte && $result['range_id'] != $SessSemName[1]) || ( $level !=0 && ( $folder_tree->isWritable($folder_id, $user->id) && $folder_tree->isWritable($folder_tree->getValue($folder_id, 'parent_id'), $user->id) && !$folder_tree->isExerciseFolder($folder_id, $user->id) ) ) ) { if (!$is_issue_folder && !$is_group_folder) { $edit.= LinkButton::create(_("Verschieben"), URLHelper::getURL("?open=".$folder_id."_m_#anker")); } } # Knopf: kopieren if ($rechte || ( $level !=0 && !$folder_tree->isExerciseFolder($folder_id, $user->id) ) ) { if (!$is_issue_folder && !$is_group_folder) { $edit.= LinkButton::create(_("Kopieren"), URLHelper::getURL("?open=".$folder_id."_co_#anker")); } } } # Knopf: sortieren if ($rechte) { $edit .= LinkButton::create(_("Sortieren"), URLHelper::getURL("?open=".$folder_id."_az_#anker")); } } if (!$edit) $edit = ' '; print "<table width=\"100%\" cellpadding=0 cellspacing=0 border=0><tr>"; //Ordner-Content ausgeben printcontent ("99%", TRUE, $content, $edit); print "</tr></table>"; print "</td></tr>"; //Ein paar Überprüfungen, was eigentlich angezeigt werden soll: Dateien und Unterordner $folders_kids = $folder_tree->getKids($folder_id); $folders_kids = $db->query("SELECT folder_id " . "FROM folder " . "WHERE range_id = ".$db->quote($folder_id)." " . "ORDER BY priority ASC, name ASC")->fetchAll(); $hasrealkids = $folder_tree->hasKids($folder_id); if ( ((count($folders_kids)) || ($document_count > 0)) && (($rechte) || ($folder_tree->isExecutable($folder_id, $user->id))) ) { print "<tr>"; //Der Navigationsast nach unten print "<td class=\"tree-elbow-line\">" . Assets::img("datatree_3.gif") . "</td>"; //Mehrere Zeilen, die wiederum Dateien mit eventuellen Optionen sind. print "<td colspan=3>"; print "<div class=\"folder_container".($rechte ? " sortable" : "")."\" id=\"folder_subfolders_".$folder_id."\">"; //Unterordner darstellen: is_array($folders_kids) || $folders_kids = array(); $subfolders = array(); foreach ($folders_kids as $key => $unterordner) { if (($folder_tree->isExecutable($unterordner['folder_id'], $user->id)) || ($rechte)) { //bin ich Dozent oder Tutor? $subfolders[] = $unterordner['folder_id']; } } if ($subfolders) { foreach ($subfolders as $key => $subfolder) { $folder_pos = ((count($subfolders) > 1) ? (($key == 0) ? "top" : (($key == count($subfolders)-1) ? "bottom" : "middle")) : "alone"); display_folder($subfolder, $open, $change, $move, $upload, $refresh, $filelink, $anchor_id, $folder_pos, false); } } print "</div>"; //Dateien darstellen: $countfolder++; print "<div class=\"folder_container".($rechte ? " sortable" : "")."\" id=\"folder_".$folder_id."\">"; if (($rechte) || ($folder_tree->isReadable($folder_id, $user->id))) { $query = "SELECT a.*,". $_fullname_sql['full'] ." AS fullname, " . "username, " . "IF(IFNULL(a.name,'')='', a.filename,a.name) AS t_name " . "FROM dokumente a " . "LEFT JOIN auth_user_md5 USING (user_id) " . "LEFT JOIN user_info USING (user_id) " . "WHERE range_id = '".$result["folder_id"]."' " . "ORDER BY a.priority ASC, t_name ASC, a.chdate DESC "; $result2 = $db->query($query)->fetchAll(); foreach ($result2 as $key => $datei) { $file_pos = ((count($result2) > 1) ? (($key == 0) ? "top" : (($key == count($result2)-1) ? "bottom" : "middle")) : "alone"); display_file_line($datei, $folder_id, $open, $change, $move, $upload, FALSE, $refresh, $filelink, $anchor_id, $file_pos); } } print "</div>"; print "</td></tr>"; } print "</table>"; //Ende der zweiten Tabelle }
function isIssue($issue_id) { return IssueDB::isIssue($issue_id); }