/**
  * Creates a FeedLink instance.
  *
  * @param string $title
  *   The title of the feed.
  * @param string $href
  *   The absolute URL to the feed.
  */
 public function __construct($title, $href)
 {
     $rel = 'alternate';
     $attributes['title'] = $title;
     $attributes['type'] = 'application/rss+xml';
     parent::__construct($href, $rel, $attributes);
 }
Ejemplo n.º 2
0
 /**
  * Displays the deputy information of a user.
  */
 public function index_action()
 {
     if (Request::submitted('add_deputy') && ($deputy_id = Request::option('deputy_id'))) {
         $this->check_ticket();
         if (isDeputy($deputy_id, $this->user->user_id)) {
             $this->reportError(_('%s ist bereits als Vertretung eingetragen.'), get_fullname($deputy_id, 'full'));
         } else {
             if ($deputy_id == $this->user->user_id) {
                 $this->reportError(_('Sie können sich nicht als Ihre eigene Vertretung eintragen!'));
             } else {
                 if (addDeputy($deputy_id, $this->user->user_id)) {
                     $this->reportSuccess(_('%s wurde als Vertretung eingetragen.'), get_fullname($deputy_id, 'full'));
                 } else {
                     $this->reportError(_('Fehler beim Eintragen der Vertretung!'));
                 }
             }
         }
         $this->redirect('settings/deputies');
         return;
     }
     $deputies = getDeputies($this->user->user_id, true);
     $exclude_users = array($this->user->user_id);
     if (is_array($deputies)) {
         $exclude_users = array_merge($exclude_users, array_map(function ($d) {
             return $d['user_id'];
         }, $deputies));
     }
     $this->deputies = $deputies;
     $this->search = new PermissionSearch('user', _('Vor-, Nach- oder Benutzername'), 'user_id', array('permission' => getValidDeputyPerms(), 'exclude_user' => $exclude_users));
     $sidebar = Sidebar::Get();
     $sidebar->setTitle(PageLayout::getTitle());
     $actions = new ActionsWidget();
     // add "add dozent" to infobox
     $mp = MultiPersonSearch::get('settings_add_deputy')->setLinkText(_('Neue Standardvertretung festlegen'))->setDefaultSelectedUser(array_keys($this->deputies))->setLinkIconPath('')->setTitle(_('Neue Standardvertretung festlegen'))->setExecuteURL(URLHelper::getLink('dispatch.php/settings/deputies/add_member'))->setSearchObject($this->search)->setNavigationItem('/links/settings/deputies')->render();
     $element = LinkElement::fromHTML($mp, Icon::create('community+add', 'clickable'));
     $actions->addElement($element);
     Sidebar::Get()->addWidget($actions);
 }
Ejemplo n.º 3
0
 public function __construct()
 {
     $this->tour_data = HelpTour::getHelpbarTourData();
     foreach ($this->tour_data['tours'] as $index => $tour) {
         $element = new LinkElement($tour->name, URLHelper::getURL('?tour_id=' . $tour->tour_id));
         $visit_state = HelpTourUser::find(array($tour->tour_id, $GLOBALS['user']->id));
         if ($visit_state === null) {
             $element->addClass('tour-new');
         } elseif (!$visit_state->completed) {
             $element->addClass('tour-paused');
         } else {
             $element->addClass('tour-completed');
         }
         $element->addClass('tour_link');
         $element['id'] = $tour->tour_id;
         $this->addElement($element);
     }
 }
Ejemplo n.º 4
0
 /**
  * @param string $href
  *   The URI of a Stylesheet to reference.
  */
 public function __construct($href)
 {
     $attributes['type'] = 'text/css';
     parent::__construct('stylesheet', $href, $attributes);
 }
Ejemplo n.º 5
0
 public function testLinkElement()
 {
     $linkElement = new LinkElement("<url>");
     assertThat($linkElement->getOpeningText(), is("<a href=\"<url>\">"));
     assertThat($linkElement->getClosingText(), is("</a>"));
 }
Ejemplo n.º 6
0
 /**
  * displays a paginated member overview of a studygroup
  *
  * @param string id of a studypgroup
  * @param string page number the current page
  *
  * @return void
  *
  */
 function members_action()
 {
     $id = $_SESSION['SessionSeminar'];
     PageLayout::setTitle(getHeaderLine($_SESSION['SessionSeminar']) . ' - ' . _("Teilnehmende"));
     Navigation::activateItem('/course/members');
     PageLayout::setHelpKeyword('Basis.StudiengruppenBenutzer');
     Request::set('choose_member_parameter', $this->flash['choose_member_parameter']);
     object_set_visit_module('participants');
     $this->last_visitdate = object_get_visit($id, 'participants');
     $sem = Course::find($id);
     $this->anzahl = StudygroupModel::countMembers($id);
     $this->groupname = $sem->getFullname();
     $this->sem_id = $id;
     $this->groupdescription = $sem->beschreibung;
     $this->moderators = $sem->getMembersWithStatus('dozent');
     $this->tutors = $sem->getMembersWithStatus('tutor');
     $this->autors = $sem->getMembersWithStatus('autor');
     $this->accepted = $sem->admission_applicants->findBy('status', 'accepted');
     $this->sem_class = Course::findCurrent()->getSemClass();
     $inviting_search = new SQLSearch("SELECT auth_user_md5.user_id, {$GLOBALS['_fullname_sql']['full_rev']} as fullname, username, perms " . "FROM auth_user_md5 " . "LEFT JOIN user_info ON (auth_user_md5.user_id = user_info.user_id) " . "LEFT JOIN seminar_user ON (auth_user_md5.user_id = seminar_user.user_id AND seminar_user.Seminar_id = '" . addslashes($id) . "') " . "WHERE perms  NOT IN ('root', 'admin') " . "AND " . get_vis_query() . " AND (username LIKE :input OR Vorname LIKE :input " . "OR CONCAT(Vorname,' ',Nachname) LIKE :input " . "OR CONCAT(Nachname,' ',Vorname) LIKE :input " . "OR Nachname LIKE :input OR {$GLOBALS['_fullname_sql']['full_rev']} LIKE :input) " . "ORDER BY fullname ASC", _("Nutzer suchen"), "user_id");
     $this->rechte = $GLOBALS['perm']->have_studip_perm("tutor", $id);
     $actions = new ActionsWidget();
     if ($this->rechte) {
         $mp = MultiPersonSearch::get('studygroup_invite_' . $id)->setLinkText(_('Neue Gruppenmitglieder-/innen einladen'))->setLinkIconPath("")->setTitle(_('Neue Gruppenmitglieder/-innen einladen'))->setExecuteURL($this->url_for('course/studygroup/execute_invite/' . $id, array('view' => Request::get('view'))))->setSearchObject($inviting_search)->addQuickfilter(_('Adressbuch'), User::findCurrent()->contacts->pluck('user_id'))->setNavigationItem('/course/members')->render();
         $element = LinkElement::fromHTML($mp, Icon::create('community+add', 'clickable'));
         $actions->addElement($element);
     }
     if ($this->rechte || $sem->getSemClass()['studygroup_mode']) {
         $actions->addLink(_('Nachricht an alle Gruppenmitglieder verschicken'), $this->url_for('course/studygroup/message/' . $id), Icon::create('mail', 'clickable'), array('data-dialog' => 1));
     }
     if ($actions->hasElements()) {
         Sidebar::get()->addWidget($actions);
     }
     $this->invitedMembers = StudygroupModel::getInvitations($id);
 }
Ejemplo n.º 7
0
 private function createSidebar($filtered_members)
 {
     $sidebar = Sidebar::get();
     $sem = Seminar::GetInstance($this->course_id);
     if ($this->is_tutor) {
         $widget = new ActionsWidget();
         $url = URLHelper::getLink('dispatch.php/messages/write', array('course_id' => $this->course_id, 'default_subject' => $this->subject, 'filter' => 'all', 'emailrequest' => 1));
         $widget->addLink(_('Nachricht an alle (Rundmail)'), $url, Icon::create('inbox', 'clickable'), array('data-dialog' => "buttons"));
         if ($this->is_dozent) {
             if (!$this->dozent_is_locked) {
                 $sem_institutes = $sem->getInstitutes();
                 if (SeminarCategories::getByTypeId($sem->status)->only_inst_user) {
                     $search_template = "user_inst";
                 } else {
                     $search_template = "user";
                 }
                 // create new search for dozent
                 $searchtype = new PermissionSearch($search_template, sprintf(_("%s suchen"), get_title_for_status('dozent', 1, $sem->status)), "user_id", array('permission' => 'dozent', 'exclude_user' => array(), 'institute' => $sem_institutes));
                 // quickfilter: dozents of institut
                 $sql = "SELECT user_id FROM user_inst WHERE Institut_id = ? AND inst_perms = 'dozent'";
                 $db = DBManager::get();
                 $statement = $db->prepare($sql, array(PDO::FETCH_NUM));
                 $statement->execute(array(Seminar::getInstance($this->course_id)->getInstitutId()));
                 $membersOfInstitute = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
                 // add "add dozent" to infobox
                 $mp = MultiPersonSearch::get('add_dozent' . $this->course_id)->setLinkText(sprintf(_('Neue/n %s eintragen'), $this->status_groups['dozent']))->setDefaultSelectedUser($filtered_members['dozent']->pluck('user_id'))->setLinkIconPath("")->setTitle(sprintf(_('Neue/n %s eintragen'), $this->status_groups['dozent']))->setExecuteURL(URLHelper::getLink('dispatch.php/course/members/execute_multipersonsearch_dozent'))->setSearchObject($searchtype)->addQuickfilter(sprintf(_('%s der Einrichtung'), $this->status_groups['dozent']), $membersOfInstitute)->setNavigationItem('/course/members/view')->render();
                 $element = LinkElement::fromHTML($mp, Icon::create('community+add', 'clickable'));
                 $widget->addElement($element);
             }
             if (!$this->tutor_is_locked) {
                 $sem_institutes = $sem->getInstitutes();
                 if (SeminarCategories::getByTypeId($sem->status)->only_inst_user) {
                     $search_template = 'user_inst';
                 } else {
                     $search_template = 'user';
                 }
                 // create new search for tutor
                 $searchType = new PermissionSearch($search_template, sprintf(_('%s suchen'), get_title_for_status('tutor', 1, $sem->status)), 'user_id', array('permission' => array('dozent', 'tutor'), 'exclude_user' => array(), 'institute' => $sem_institutes));
                 // quickfilter: tutors of institut
                 $sql = "SELECT user_id FROM user_inst WHERE Institut_id = ? AND inst_perms = 'tutor'";
                 $db = DBManager::get();
                 $statement = $db->prepare($sql, array(PDO::FETCH_NUM));
                 $statement->execute(array(Seminar::getInstance($this->course_id)->getInstitutId()));
                 $membersOfInstitute = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
                 // add "add tutor" to infobox
                 $mp = MultiPersonSearch::get("add_tutor" . $this->course_id)->setLinkText(sprintf(_('Neue/n %s eintragen'), $this->status_groups['tutor']))->setDefaultSelectedUser($filtered_members['tutor']->pluck('user_id'))->setLinkIconPath("")->setTitle(sprintf(_('Neue/n %s eintragen'), $this->status_groups['tutor']))->setExecuteURL(URLHelper::getLink('dispatch.php/course/members/execute_multipersonsearch_tutor'))->setSearchObject($searchType)->addQuickfilter(sprintf(_('%s der Einrichtung'), $this->status_groups['tutor']), $membersOfInstitute)->setNavigationItem('/course/members/view')->render();
                 $element = LinkElement::fromHTML($mp, Icon::create('community+add', 'clickable'));
                 $widget->addElement($element);
             }
         }
         if (!$this->is_locked) {
             // create new search for members
             $searchType = new SQLSearch("SELECT auth_user_md5.user_id, CONCAT(" . $GLOBALS['_fullname_sql']['full'] . ", \" (\", auth_user_md5.username, \")\") as fullname " . "FROM auth_user_md5 " . "LEFT JOIN user_info ON (user_info.user_id = auth_user_md5.user_id) " . "WHERE (CONCAT(auth_user_md5.Vorname, \" \", auth_user_md5.Nachname) LIKE :input " . "OR CONCAT(auth_user_md5.Nachname, \" \", auth_user_md5.Vorname) LIKE :input " . "OR auth_user_md5.username LIKE :input) " . "AND auth_user_md5.perms IN ('autor', 'tutor', 'dozent') " . " AND auth_user_md5.visible <> 'never' " . "ORDER BY Vorname, Nachname", _("Teilnehmer suchen"), "username");
             // quickfilter: tutors of institut
             $sql = "SELECT user_id FROM user_inst WHERE Institut_id = ? AND inst_perms = 'autor'";
             $db = DBManager::get();
             $statement = $db->prepare($sql, array(PDO::FETCH_NUM));
             $statement->execute(array(Seminar::getInstance($this->course_id)->getInstitutId()));
             $membersOfInstitute = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
             // add "add autor" to infobox
             $mp = MultiPersonSearch::get("add_autor" . $this->course_id)->setLinkText(sprintf(_('Neue/n %s eintragen'), $this->status_groups['autor']))->setDefaultSelectedUser($filtered_members['autor']->pluck('user_id'))->setLinkIconPath("")->setTitle(sprintf(_('Neue/n %s eintragen'), $this->status_groups['autor']))->setExecuteURL(URLHelper::getLink('dispatch.php/course/members/execute_multipersonsearch_autor'))->setSearchObject($searchType)->addQuickfilter(sprintf(_('%s der Einrichtung'), $this->status_groups['autor']), $membersOfInstitute)->setNavigationItem('/course/members/view')->render();
             $element = LinkElement::fromHTML($mp, Icon::create('community+add', 'clickable'));
             $widget->addElement($element);
             // add "add person to waitlist" to sidebar
             if ($sem->isAdmissionEnabled() && !$sem->admission_disable_waitlist && (!$sem->getFreeSeats() || $sem->admission_disable_waitlist_move)) {
                 $ignore = array_merge($filtered_members['dozent']->pluck('user_id'), $filtered_members['tutor']->pluck('user_id'), $filtered_members['autor']->pluck('user_id'), $filtered_members['user']->pluck('user_id'), $filtered_members['awaiting']->pluck('user_id'));
                 $mp = MultiPersonSearch::get('add_waitlist' . $this->course_id)->setLinkText(_('Neue/n Person auf Warteliste eintragen'))->setDefaultSelectedUser($ignore)->setLinkIconPath('')->setTitle(_('Neue/n Person auf Warteliste eintragen'))->setExecuteURL(URLHelper::getLink('dispatch.php/course/members/execute_multipersonsearch_waitlist'))->setSearchObject($searchType)->addQuickfilter(_('Mitglieder der Einrichtung'), $membersOfInstitute)->setNavigationItem('/course/members/view')->render();
                 $element = LinkElement::fromHTML($mp, Icon::create('community+add', 'clickable'));
                 $widget->addElement($element);
             }
         }
         $widget->addLink(_('Teilnehmerliste importieren'), $this->url_for('course/members/import_autorlist'), Icon::create('community+add', 'clickable'));
         $sidebar->addWidget($widget);
         if (Config::get()->EXPORT_ENABLE) {
             include_once $GLOBALS['PATH_EXPORT'] . '/export_linking_func.inc.php';
             $widget = new ExportWidget();
             // create csv-export link
             $csvExport = export_link($this->course_id, "person", sprintf('%s %s', htmlReady($this->status_groups['autor']), htmlReady($this->course_title)), 'csv', 'csv-teiln', '', _('Teilnehmendenliste als csv-Dokument exportieren'), 'passthrough');
             $widget->addLink(_('Teilnehmendenliste als CSV-Dokument exportieren'), $this->parseHref($csvExport), Icon::create('file-office', 'clickable'));
             // create csv-export link
             $rtfExport = export_link($this->course_id, "person", sprintf('%s %s', htmlReady($this->status_groups['autor']), htmlReady($this->course_title)), 'rtf', 'rtf-teiln', '', _('Teilnehmendenliste als rtf-Dokument exportieren'), 'passthrough');
             $widget->addLink(_('Teilnehmendenliste als rtf-Dokument exportieren'), $this->parseHref($rtfExport), Icon::create('file-text', 'clickable'));
             if (count($this->awaiting) > 0) {
                 $awaiting_rtf = export_link($this->course_id, "person", sprintf('%s %s', _("Warteliste"), htmlReady($this->course_title)), "rtf", "rtf-warteliste", $this->waiting_type, _("Warteliste als Textdokument (.rtf) exportieren"), 'passthrough');
                 $widget->addLink(_('Warteliste als rtf-Dokument exportieren'), $this->parseHref($awaiting_rtf), Icon::create('file-office+export', 'clickable'));
                 $awaiting_csv = export_link($this->course_id, "person", sprintf('%s %s', _("Warteliste"), htmlReady($this->course_title)), "csv", "csv-warteliste", $this->waiting_type, _("Warteliste als Tabellendokument (.csv) exportieren"), 'passthrough');
                 $widget->addLink(_('Warteliste als csv-Dokument exportieren'), $this->parseHref($awaiting_csv), Icon::create('file-text+export', 'clickable'));
             }
             $sidebar->addWidget($widget);
         }
     } else {
         if ($this->is_autor || $this->is_user) {
             // Visibility preferences
             if (!$this->my_visibility['iam_visible']) {
                 $text = _('Sie sind für andere Teilnehmenden auf der Teilnehmendenliste nicht sichtbar.');
                 $icon = Icon::create('visibility-visible', 'clickable');
                 $modus = 'make_visible';
                 $link_text = _('Klicken Sie hier, um sichtbar zu werden.');
             } else {
                 $text = _('Sie sind für andere Teilnehmenden auf der Teilnehmendenliste sichtbar.');
                 $icon = Icon::create('visibility-invisible', 'clickable');
                 $modus = 'make_invisible';
                 $link_text = _('Klicken Sie hier, um unsichtbar zu werden.');
             }
             $actions = new ActionsWidget();
             $actions->addLink($link_text, $this->url_for('course/members/change_visibility', $modus, $this->my_visibility['visible_mode']), $icon, array('title' => $text));
             $sidebar->addWidget($actions);
         }
     }
 }
Ejemplo n.º 8
0
 public function insertLink($label, $url, $icon = false, $target = false, $attributes = array())
 {
     $id = md5($url);
     $element = new LinkElement($label, $url);
     $element->attributes = $attributes;
     $element->setTarget($target);
     $widget = new HelpbarWidget();
     $widget->addElement($element);
     $widget->setIcon($icon);
     $this->insertWidget($widget, ':first', 'help-' . $id);
 }