diff --git a/cis/sprache.php b/cis/sprache.php new file mode 100755 index 000000000..a2e156fa2 --- /dev/null +++ b/cis/sprache.php @@ -0,0 +1,63 @@ + and + * + */ +require_once('../config/cis.config.inc.php'); +require_once('../include/functions.inc.php'); +require_once('../include/sprache.class.php'); + +if(isset($_GET['sprache'])) +{ + $sprache = new sprache(); + if($sprache->load($_GET['sprache'])) + setSprache($_GET['sprache']); + else + die('Sprache invalid'); +} +?> + + + + Sprache Umschalten + + + + + + + + + + + +
+
Sprache wechseln:'; + + $sprache = new sprache(); + $sprache->getAll(true); + foreach($sprache->result as $row) + { + echo ' '.$row->sprache.''; + } + ?> +
+ + diff --git a/cms/admin.php b/cms/admin.php index 00c3da6df..cf5719266 100644 --- a/cms/admin.php +++ b/cms/admin.php @@ -63,6 +63,7 @@ $berechtigte_oe = $rechte->getOEkurzbz('basis/cms') { mode : "textareas", theme : "advanced", + language : "de", file_browser_callback: "FHCFileBrowser", plugins : "spellchecker,pagebreak,style,layer,table,advhr,advimage,advlink,inlinepopups,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras", @@ -113,6 +114,7 @@ $action = isset($_GET['action'])?$_GET['action']:''; $method = isset($_GET['method'])?$_GET['method']:null; $message = ''; $submenu_depth=0; +$datum_obj = new datum(); //Inhalt Speichern if(isset($_POST['XSDFormPrinter_XML'])) @@ -191,9 +193,14 @@ if(!is_null($method)) if($content->save()) { - $message .= 'Eintrag wurde erfolgreich angelegt'; - $action='prefs'; - $content_id=$content->content_id; + if($content->saveContentSprache()) + { + $message .= 'Eintrag wurde erfolgreich angelegt'; + $action='prefs'; + $content_id=$content->content_id; + } + else + $message .= ''.$content->errormsg.''; } else $message .= ''.$content->errormsg.''; @@ -328,7 +335,12 @@ if(!is_null($method)) $content->updatevon=$user; if($content->save()) - $message.='Daten erfolgreich gespeichert'; + { + if($content->saveContentSprache()) + $message.='Daten erfolgreich gespeichert'; + else + $message.=''.$content->errormsg.''; + } else $message.=''.$content->errormsg.''; } @@ -608,8 +620,16 @@ else $menu='content'; } -$rootcontent = new content(); -$rootcontent->getRootContent(); +if($menu=='news') +{ + $rootcontent = new content(); + $rootcontent->getNews(); +} +else +{ + $rootcontent = new content(); + $rootcontent->getRootContent(); +} foreach($rootcontent->result as $row) { @@ -626,7 +646,7 @@ foreach($rootcontent->result as $row) if($content->template_kurzbz=='news') { $output.= ''; - $output.= drawmenulink($row->content_id, $content->titel.' '.$content->insertamum, $content->oe_kurzbz); + $output.= drawmenulink($row->content_id, mb_substr($content->titel,0,15).' '.$datum_obj->formatDatum($content->insertamum,'d.m.Y'), $content->oe_kurzbz); $output.= ''; } @@ -653,7 +673,7 @@ echo ''; echo ''; //Editieren -if(!is_null($content_id)) +if(!is_null($content_id) && $content_id!='') { echo '

Content ID: '.$content_id.' | Version:'.$version.' | Sprache:'.$sprache.'

'; $content = new content(); diff --git a/cms/dms.php b/cms/dms.php index e0934d1bc..0b0e9bf12 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -25,16 +25,16 @@ require_once('../include/dms.class.php'); if(!isset($_GET['id'])) die('ID muss uebergeben werden'); -if(!isset($_GET['version'])) - die('Version muss uebergeben werden'); +//if(!isset($_GET['version'])) +// die('Version muss uebergeben werden'); $id = $_GET['id']; -$version = $_GET['version']; +$version = isset($_GET['version'])?$_GET['version']:null; if(!is_numeric($id)) die('ID ist ungueltig'); -if(!is_numeric($version)) +if($version!='' && !is_numeric($version)) die('Version ist ungueltig'); $doc = new dms(); diff --git a/cms/news.php b/cms/news.php index 2787868c7..5920dd4d5 100755 --- a/cms/news.php +++ b/cms/news.php @@ -20,36 +20,70 @@ * Karl Burkhart . */ /** - * Laedt den Content und das zugeordnete Template aus der Datenbank und - * zeigt diese an. + * Laedt die News und zeigt diese an + * + * Wenn kein Parameter uebergeben wird, werden nur die allgemeinen News angezeigt + * Wenn ein Studiengang uebergeben wird, werden rechts neben den News Studiengangsdetails angezeigt + * + * Parameter: + * stg_kz Studiengangskennzahl + * semester Semester + * edit Edit Buttons anzeigen + * */ require_once('../config/cis.config.inc.php'); require_once('../include/content.class.php'); require_once('../include/template.class.php'); require_once('../include/functions.inc.php'); +require_once('../include/news.class.php'); +require_once('../include/kontakt.class.php'); +require_once('../include/benutzerfunktion.class.php'); +require_once('../include/studiengang.class.php'); +require_once('../include/mitarbeiter.class.php'); +require_once('../include/datum.class.php'); +require_once('../include/phrasen.class.php'); -$version = (isset($_GET['version'])?$_GET['version']:null); -$sprache = (isset($_GET['sprache'])?$_GET['sprache']:getSprache()); -$sichtbar = !isset($_GET['sichtbar']); +$sprache = getSprache(); +$datum_obj = new datum(); //XML Content laden $content = new content(); $db = new basis_db(); +$studiengang_kz = (isset($_GET['studiengang_kz'])?$_GET['studiengang_kz']:0); +$semester = (isset($_GET['semester'])?$_GET['semester']:null); -$qry = "SELECT content FROM campus.tbl_content JOIN campus.tbl_contentsprache USING(content_id) WHERE tbl_content.template_kurzbz='news'"; -$content = ''; -if($result = $db->db_query($qry)) +$editable = isset($_GET['edit']); +$news = new news(); + +$news->getnews(MAXNEWSALTER, $studiengang_kz, $semester, false, null, MAXNEWS); + +$xml = ''; + +foreach($news->result as $row) { - while($row = $db->db_fetch_object($result)) - { - $content .=$row->content; - } + $content = new content(); + $content->getContent($row->content_id, $sprache,null, true, true); + + //das Datum des News Eintrages ist nicht im XML enthalten, es muss extra hinzugefuegt werden + $datum = 'formatDatum($row->datum,'d.m.Y').']]>'; + + //Wenn der Parameter edit uebergeben wird, dann wird neben dem Datum ein Link zum Editieren des Eintrags angezeigt + if($editable) + $id = 'news_id.']]>'; + else + $id=''; + $xml .= mb_substr($content->content,0,mb_strlen($content->content)-7).$datum.$id.mb_substr($content->content,-7); + //$xml .= $content->content; } -$content .= ''; -//echo $content; -$XML = new DOMDocument(); -$XML->loadXML($content); + +if($studiengang_kz!=0) + $xml.=getStgContent($studiengang_kz, $semester, $sprache); + +$xml .= ''; + +$doc = new DOMDocument(); +$doc->loadXML($xml); //XSLT Vorlage laden $template = new template(); @@ -63,5 +97,188 @@ $xsltemplate->loadXML($template->xslt_xhtml); $processor = new XSLTProcessor(); $processor->importStylesheet($xsltemplate); -echo $processor->transformToXML($XML); +echo $processor->transformToXML($doc); + +/** + * Liefert ein XML mit den Details eines Studiengangs + * welche dann neben den News angezeigt werden + * + * @param $studiengang_kz + * @param $semester + * @param $sprache + */ +function getStgContent($studiengang_kz, $semester, $sprache) +{ + $p = new phrasen($sprache); + + $xml = ''; + + $studiengang = new studiengang(); + $studiengang->load($studiengang_kz); + + + //Studiengangsleitung + $stg_oe_obj = new studiengang(); + $stgl = $stg_oe_obj->getLeitung($studiengang_kz); + $xml.='t('global/studiengangsmanagement').']]>'; + $xml.='t('global/studiengangsleitung').']]>'; + if(count($stgl)>0) + { + foreach ($stgl as $uid) + { + $row_course_leader = new mitarbeiter($uid); + $xml.=''; + $xml.='titelpre.' '.$row_course_leader->vorname.' '.$row_course_leader->nachname.' '.$row_course_leader->titelpost.']]>'; + + if(isset($row_course_leader) && $row_course_leader->uid != "") + { + $xml.='uid.'@'.DOMAIN.']]>'; + } + + if(isset($row_course_leader) && $row_course_leader->telefonklappe != "") + { + $hauptnummer=''; + + if($row_course_leader->standort_id!='') + { + $kontakt = new kontakt(); + $kontakt->loadFirmaKontakttyp($row_course_leader->standort_id, 'telefon'); + $hauptnummer = $kontakt->kontakt; + } + + $xml.= 'telefonklappe.']]>'; + } + $xml.=''; + } + } + + //geschaeftsf. Leitung auselesen + $xml.='t('global/geschaeftsfuehrendeltg').']]>'; + $benutzerfkt = new benutzerfunktion(); + $benutzerfkt->getBenutzerFunktionen('gLtg', $studiengang->oe_kurzbz); + foreach($benutzerfkt->result as $row) + { + $ma = new mitarbeiter(); + $ma->load($row->uid); + + if($ma->uid!='') + { + $xml.=''; + + $xml.='titelpre.' '.$ma->vorname.' '.$ma->nachname.' '.$ma->titelpost.']]>'; + $xml.='uid.'@'.DOMAIN.']]>'; + + if($ma->telefonklappe != '') + { + if($ma->standort_id!='') + { + $kontakt = new kontakt(); + $kontakt->loadFirmaKontakttyp($row_course_leader->standort_id, 'telefon'); + $hauptnummer = $kontakt->kontakt; + } + $xml.= 'telefonklappe.']]>'; + } + + $xml.=''; + } + } + + //Studiengangsleiter Stellvertreter auselesen + $benutzerfkt = new benutzerfunktion(); + $benutzerfkt->getBenutzerFunktionen('stvLtg', $studiengang->oe_kurzbz); + $xml.='t('global/stellvertreter').']]>'; + foreach($benutzerfkt->result as $row) + { + $ma = new mitarbeiter(); + $ma->load($row->uid); + + if($ma->uid!='') + { + $xml.=''; + + $xml.='titelpre.' '.$ma->vorname.' '.$ma->nachname.' '.$ma->titelpost.']]>'; + $xml.='uid.'@'.DOMAIN.']]>'; + + if($ma->telefonklappe != '') + { + if($ma->standort_id!='') + { + $kontakt = new kontakt(); + $kontakt->loadFirmaKontakttyp($row_course_leader->standort_id, 'telefon'); + $hauptnummer = $kontakt->kontakt; + } + $xml.= 'telefonklappe.']]>'; + } + + $xml.=''; + } + } + + //Assistenz + $benutzerfkt = new benutzerfunktion(); + $benutzerfkt->getBenutzerFunktionen('ass', $studiengang->oe_kurzbz); + $xml.='t('global/sekretariat').']]>'; + foreach($benutzerfkt->result as $row) + { + $ma = new mitarbeiter(); + $ma->load($row->uid); + + if($ma->uid!='') + { + $xml.=''; + + $xml.='titelpre.' '.$ma->vorname.' '.$ma->nachname.' '.$ma->titelpost.']]>'; + $xml.='uid.'@'.DOMAIN.']]>'; + + if($ma->telefonklappe != '') + { + if($ma->standort_id!='') + { + $kontakt = new kontakt(); + $kontakt->loadFirmaKontakttyp($row_course_leader->standort_id, 'telefon'); + $hauptnummer = $kontakt->kontakt; + } + $xml.= 'telefonklappe.']]>'; + } + + $xml.=''; + } + } + + //Zusatzinfo (Oeffnungszeiten etc) + $xml.='zusatzinfo_html.']]>'; + + + //Studentenvertreter + $benutzerfkt = new benutzerfunktion(); + $benutzerfkt->getBenutzerFunktionen('stdv', $studiengang->oe_kurzbz); + $xml.='t('global/studentenvertreter').']]>'; + foreach($benutzerfkt->result as $row) + { + $bn = new benutzer(); + $bn->load($row->uid); + + if($bn->uid!='') + { + $xml.=''; + $xml.='titelpre.' '.$bn->vorname.' '.$bn->nachname.' '.$bn->titelpost.']]>'; + $xml.='uid.'@'.DOMAIN.']]>'; + $xml.=''; + } + } + + if(CIS_EXT_MENU) + { + $xml.=' + t('global/lehrziele').']]> + t('global/allgemeinerdownload').']]> + t('global/newsgroups').']]> + kuerzel).']]> + kurzbzlang).']]> + '; + } + + $xml.=''; + return $xml; +} ?> \ No newline at end of file diff --git a/cms/newsverwaltung.php b/cms/newsverwaltung.php new file mode 100755 index 000000000..f835966f7 --- /dev/null +++ b/cms/newsverwaltung.php @@ -0,0 +1,439 @@ + + */ +require_once('../config/cis.config.inc.php'); +require_once('../include/functions.inc.php'); +require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/news.class.php'); +require_once('../include/content.class.php'); +require_once('../include/phrasen.class.php'); +require_once('../include/studiengang.class.php'); +require_once('../include/datum.class.php'); + +$uid = get_uid(); +$sprache = getSprache(); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if(!$rechte->isBerechtigt('basis/news')) + die('Sie haben keine Berechtigung für diese Seite'); + +$p = new phrasen($sprache); + +if(isset($_GET['studiengang_kz'])) + $studiengang_kz=$_GET['studiengang_kz']; +else + $studiengang_kz='0'; + +if(isset($_GET['semester'])) + $semester = $_GET['semester']; +else + $semester = null; + +$news_id = (isset($_REQUEST['news_id'])?$_REQUEST['news_id']:null); +$datum_obj = new datum(); +//ToDo: markieren des richtigen Tabs +$tabselect=0; +$content = new content(); + +echo ' + + + + + + + + + + + + '.$p->t('news/newsverwaltung').' + + +'; +if(isset($_GET['action']) && $_GET['action']=='add_uebersetzung') +{ + $news = new news(); + $news->load($_GET['news_id']); + + $content = new content(); + $content->getContent($news->content_id); + + $content->new = true; + $content->sichtbar=true; + $content->sprache=$_GET['lang']; + $content->insertvon = $uid; + $content->insertamum = date('Y-m-d H:i:s'); + $content->updatevon = $uid; + $content->updateamum = date('Y-m-d H:i:s'); + $content->reviewvon=''; + $content->reviewamum=''; + $content->gesperrt_uid=''; + + if($content->saveContentSprache()) + echo 'Eintrag wurde erfolgreich angelegt'; + else + echo ''.$content->errormsg.''; +} + +if(isset($_GET['action']) && $_GET['action']=='delete') +{ + if(!$rechte->isBerechtigt('basis/news',null, 'suid')) + die('Sie haben keine Berechtigung zum Löschen von Einträgen'); + + if(isset($_GET['news_id']) && is_numeric($_GET['news_id'])) + { + $news_id = $_GET['news_id']; + $news = new news(); + if($news->delete($news_id)) + { + echo 'News wurde erfolgreich gelöscht'; + $news_id=''; + } + else + { + echo ''.$news->errormsg.''; + } + } + else + die('NewsID ist ungueltig'); + + +} + +if(isset($_POST['save'])) +{ + $news_id = $_POST['news_id']; + + $news = new news(); + + if($news_id!='') + { + $news->load($news_id); + $news->new=false; + } + else + { + $news->new = true; + $news->uid = $uid; + $news->insertamum = date('Y-m-d H:i:s'); + $news->insertvon = $uid; + } + $news->studiengang_kz=$_POST['studiengang_kz']; + $news->semester = $_POST['semester']; + $news->updateamum=date('Y-m-d H:i:s'); + $news->updatevon = $uid; + $news->datum = $datum_obj->formatDatum($_POST['datum'],'Y-m-d'); + $news->datum_bis = $datum_obj->formatDatum($_POST['datum_bis'],'Y-m-d'); + + if($news->content_id=='') + { + $studiengang = new studiengang(); + $studiengang->load($_POST['studiengang_kz']); + + $content = new content(); + $content->template_kurzbz='news'; + $content->oe_kurzbz=$studiengang->oe_kurzbz; + $content->aktiv=true; + $content->menu_open=false; + $content->insertamum=date('Y-m-d H:i:s'); + $content->insertvon = $uid; + if(!$content->save(true)) + die($content->errormsg); + + $news->content_id = $content->content_id; + } + + if(!$news->save()) + die($news->errormsg); + $news_id = $news->news_id; + + //ContentSprache + $sprachen = array(DEFAULT_LANGUAGE); + foreach($_POST as $key=>$value) + if(mb_strstr($key,'contentsprache_id_')) + $sprachen[] = mb_substr($key, strlen('contentsprache_id_')); + + $sprachen = array_unique($sprachen); + + foreach($sprachen as $lang) + { + $content = new content(); + if(isset($_POST['contentsprache_id_'.$lang]) && $_POST['contentsprache_id_'.$lang]!='') + { + $content->loadContentSprache($_POST['contentsprache_id_'.$lang]); + $content->new = false; + } + else + { + $content->insertamum = date('Y-m-d H:i:s'); + $content->insertvon = $uid; + $content->sichtbar=true; + $content->version=1; + $content->content_id=$news->content_id; + $content->new = true; + $content->sprache = $lang; + } + + $xml = ''; + $xml.=''; + $xml.=''; + $xml.=''; + $xml.=''; + + $content->content = $xml; + $content->updateamum = date('Y-m-d H:i:s'); + $content->updatevon = $uid; + $content->titel = $_POST['betreff_'.$lang]; + $content->saveContentSprache(); + } +} + +$sprachen = array(DEFAULT_LANGUAGE); + +$news = new news(); +if($news_id!='') +{ + $news->load($news_id); + $sprachen = $content->getLanguages($news->content_id); + $studiengang_kz = $news->studiengang_kz; + $semester = $news->semester; +} +if($studiengang_kz=='0' && $semester=='') + $type=$p->t('news/allgemein'); +elseif($studiengang_kz=='0' && $semester=='0') + $type=$p->t('news/freifach'); +else + $type=$p->t('news/studiengang'); + +echo '

'.$p->t('news/newsverwaltung').' - '.$type.'

'; +echo '
+ + + + +
+ + + + + + + + + +
'.$p->t('news/sichtbarab').'
'.$p->t('news/sichtbarbis').'
+
'; + +//DropDown fuer Studiengang und Semester anzeigen +if($studiengang_kz!='0') +{ + $studiengang = new studiengang(); + $studiengang->getAll('typ, kurzbz', false); + + echo ' + + + + '; + + echo ' + + + +
'.$p->t('global/studiengang').' + +
'.$p->t('global/semester').' + +
+ '; +} +else +{ + echo ' + '; +} + +echo '
'; +echo '
+
    '; + +foreach($sprachen as $lang) +{ + echo '
  • '.$lang.'
  • '; +} +if($news->content_id!='') +{ + echo '
  • +
  • '; +} +echo '
'; + +foreach($sprachen as $lang) +{ + $verfasser=''; + $betreff=''; + $text=''; + if($news->content_id!='') + { + $content->getContent($news->content_id, $lang, null, null, false); + + $xml_inhalt = new DOMDocument(); + if($content->content!='') + { + $xml_inhalt->loadXML($content->content); + } + + if($xml_inhalt->getElementsByTagName('verfasser')->item(0)) + $verfasser = $xml_inhalt->getElementsByTagName('verfasser')->item(0)->nodeValue; + if($xml_inhalt->getElementsByTagName('betreff')->item(0)) + $betreff = $xml_inhalt->getElementsByTagName('betreff')->item(0)->nodeValue; + if($xml_inhalt->getElementsByTagName('text')->item(0)) + $text = $xml_inhalt->getElementsByTagName('text')->item(0)->nodeValue; + } + echo '
'; + echo ''; + echo ' + + + + + + + + + + + + +
'.$p->t('news/verfasser').'
'.$p->t('news/betreff').'
'.$p->t('news/text').'
'; + + echo '
'; +} + +//DropDown zum Anlegen von Uebersetzungen +if($news->content_id!='') +{ + echo '
'; + $content = new content(); + if(!$vorhandene_sprachen = $content->getLanguages($news->content_id)) + die($content->errormsg); + $sprache_obj = new sprache(); + $sprache_obj->getAll(true); + + //Wenn noch nicht alle Uebersetzungen vorhanden sind, + //wird ein Formular zum Erstellen der Uebersetzung angezeigt. + if(count($vorhandene_sprachen)result)) + { + + echo $p->t('news/uebersetzunganlegen'); + foreach($sprache_obj->result as $row) + { + if(!in_array($row->sprache, $vorhandene_sprachen)) + echo '
'.$row->bezeichnung_arr[$sprache].''; + } + } + else + { + echo '
'.$p->t('news/uebersetzungenvorhanden').'
'; + } + echo '
'; +} +echo '

'; +echo ''; +echo '
'; + +// Newseintraege Anzeigen +echo '
+