, * Andreas Oesterreicher and * Karl Burkhart . */ session_start(); 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/sprache.class.php'); require_once('../include/gruppe.class.php'); require_once('../include/datum.class.php'); require_once('../include/mail.class.php'); require_once('../include/benutzerfunktion.class.php'); require_once('../include/organisationseinheit.class.php'); require_once('../include/benutzerberechtigung.class.php'); require_once('../include/xsdformprinter/xsdformprinter.php'); require_once('../include/DifferenceEngine/DifferenceEngine.php'); $user = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/cms')) die('Sie haben keine Berechtigung fuer diese Seite'); $berechtigte_oe = $rechte->getOEkurzbz('basis/cms') ?> FH Complete CMS ContentEditor getContent($content_id, $sprache, $version); if($content->saveContent($content->contentsprache_id, $_POST['XSDFormPrinter_XML'])) $message.= 'Inhalt wurde erfolgreich gespeichert'; else $message.= ''.$content->errormsg.''; } if(!is_null($method)) { switch($method) { case 'content_sperre': //Sperren und Freigeben von Content if(!isset($_GET['contentsprache_id'])) die('Falsche Parameteruebergabe'); if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } $contentsprache_id=$_GET['contentsprache_id']; if(isset($_POST['sperren'])) { $content = new content(); if($content->sperren($contentsprache_id, $user)) $message.='Eintrag gesperrt'; else $message.=''.$content->errormsg.''; } elseif(isset($_POST['freigeben'])) { $content = new content(); if($content->freigeben($contentsprache_id, $user)) $message.='Eintrag freigegeben'; else $message.=''.$content->errormsg.''; } else { $message.='Unbekannte Sperre'; } break; case 'add_new_content': //Anlegen von neuem Content if(!$rechte->isBerechtigt('basis/cms', null, 'sui')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } $template = new template(); $template->getAll(); if(!isset($template->result[0])) die('Es ist kein Template vorhanden'); if(in_array('etw',$berechtigte_oe)) $oe = 'etw'; else $oe = $berechtigte_oe[0]; $content = new content(); $content->new = true; $content->oe_kurzbz=$oe; $content->template_kurzbz=$template->result[0]->template_kurzbz; $content->titel = 'Neuer Eintrag'; $content->aktiv=true; $content->menu_open=false; $content->content = ''; $content->sichtbar=true; $content->version='1'; $content->sprache=DEFAULT_LANGUAGE; $content->insertvon = $user; $content->insertamum = date('Y-m-d H:i:s'); $content->beschreibung = ''; if($content->save()) { if($content->saveContentSprache()) { $message .= 'Eintrag wurde erfolgreich angelegt'; $action='prefs'; $content_id=$content->content_id; $version=1; $sprache=DEFAULT_LANGUAGE; } else $message .= ''.$content->errormsg.''; } else $message .= ''.$content->errormsg.''; break; case 'add_uebersetzung': //Anlegen von Uebersetzungen if(!$rechte->isBerechtigt('basis/cms', null, 'sui')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } $content = new content(); $content->getContent($content_id); $content->new = true; $content->sichtbar=true; $content->sprache=$_POST['sprache']; $content->insertvon = $user; $content->insertamum = date('Y-m-d H:i:s'); $content->updatevon = $user; $content->updateamum = date('Y-m-d H:i:s'); $content->reviewvon=''; $content->reviewamum=''; $content->gesperrt_uid=''; if($content->saveContentSprache()) { $message .= 'Eintrag wurde erfolgreich angelegt'; $action='prefs'; $sprache=$_POST['sprache']; } else $message .= ''.$content->errormsg.''; break; case 'add_newversion': //Neue Version anlegen if(!$rechte->isBerechtigt('basis/cms', null, 'sui')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } $content = new content(); $content->getContent($content_id, $sprache); $maxversion = $content->getMaxVersion($content_id, $content->sprache); $content->new = true; $content->sichtbar=false; $content->reviewvon=''; $content->reviewamum=''; $content->version=$maxversion+1; $content->insertvon = $user; $content->insertamum = date('Y-m-d H:i:s'); $content->updatevon = $user; $content->updateamum = date('Y-m-d H:i:s'); $content->gesperrt_uid=''; if($content->saveContentSprache()) { $message .= 'Eintrag wurde erfolgreich angelegt'; $action='prefs'; $version = $content->version; } else $message .= ''.$content->errormsg.''; break; case 'rights_add_group': //Gruppe fuer Berechtigung hinzufuegen if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } if(!isset($_POST['gruppe_kurzbz'])) die('Fehlender Parameter'); $content = new content(); $content->gruppe_kurzbz = $_POST['gruppe_kurzbz']; $content->insertamum = date('Y-m-d H:i:s'); $content->insertvon = $user; $content->content_id=$content_id; if(!$content->addGruppe()) $message .= ''.$content->errormsg.''; else $message .= 'Gruppe wurde erfolgreich hinzugefügt'; break; case 'rights_delete_group': //Gruppe fuer Berechtigung entfernen if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } if(!isset($_GET['gruppe_kurzbz'])) die('Fehlender Parameter'); $content = new content(); if(!$content->deleteGruppe($content_id, $_GET['gruppe_kurzbz'])) $message .= ''.$content->errormsg.''; else $message .= 'Gruppe wurde erfolgreich entfernt'; break; case 'prefs_save': //Einstellungen speichern if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } $content = new content(); $titel = $_POST['titel']; $oe_kurzbz=$_POST['oe_kurzbz']; $sichtbar=isset($_POST['sichtbar']); $aktiv=isset($_POST['aktiv']); $menu_open=isset($_POST['menu_open']); $template_kurzbz = $_POST['template_kurzbz']; $beschreibung = $_POST['beschreibung']; if($content->getContent($content_id, $sprache, $version)) { $content->titel = $titel; $content->oe_kurzbz = $oe_kurzbz; $content->sichtbar = $sichtbar; $content->aktiv = $aktiv; $content->menu_open = $menu_open; $content->template_kurzbz = $template_kurzbz; $content->updateamum=date('Y-m-d H:i:s'); $content->updatevon=$user; $content->beschreibung = $beschreibung; if($content->save()) { if($content->saveContentSprache()) $message.='Daten erfolgreich gespeichert'; else $message.=''.$content->errormsg.''; } else $message.=''.$content->errormsg.''; } else $message.=''.$content->errormsg.''; break; case 'prefs_reviewed': //Review und sichtbar schalten $bf = new benutzerfunktion(); if($bf->benutzerfunktion_exists($user, 'review') || $rechte->isBerechtigt('basis/cms_review')) { $content = new content(); $content->getContent($content_id, $sprache, $version); $content->reviewamum = date('Y-m-d H:i:s'); $content->reviewvon = $user; $content->sichtbar = true; if($content->saveContentSprache(false)) $message.='Erfolgreich reviewed'; else $message.=''.$content->errormsg.''; } else { $message.='Sie dürfen kein Review durchführen'; } break; case 'prefs_requestreview': //Review beantragen $content = new content(); $content->getContent($content_id, $sprache, $version); $oe = new organisationseinheit(); $oe_arr = $oe->getParents($content->oe_kurzbz); foreach($oe_arr as $organisationseinheit) { echo $organisationseinheit; $fkt = new benutzerfunktion(); $fkt->getBenutzerFunktionen('review', $organisationseinheit); if(count($fkt->result)>0) break; } if(count($fkt->result)==0) $fkt->getBenutzerFunktionen('review'); $to=''; foreach($fkt->result as $row) { if($to!='') $to.=','; $to .= $row->uid.'@'.DOMAIN; } if($to!='') { $from = 'no-reply@'.DOMAIN; $subject = 'CMS Review Request'; $text = "Dies ist eine automatisch generierte E-Mail.\n\n Es wurde ein Review für die Seite '$content->titel' ($sprache, Version $version) angefordert.\n \n (um den Link anzuzeigen müssen Sie in die HTML Ansicht wechseln) \n \n Mit freundlichen Grüßen\n \n FH Technikum Wien\n Hoechstaedtplatz 5, 1200 Wien, AUSTRIA"; $texthtml = "Dies ist eine automatisch generierte E-Mail.

Es wurde ein Review für die Seite '$content->titel' ($sprache, Version $version) angefordert.

content_id."&sprache=$sprache&version=$version&action=content\">zum Artikel

Mit freundlichen Grüßen

FH Technikum Wien
Hoechstaedtplatz 5, 1200 Wien, AUSTRIA "; $mail = new mail($to, $from, $subject, $text); $mail->setHTMLContent($texthtml); if($mail->send()) { $message.='Review Anforderung wurde an '.$to.' versendet'; } else { $message.='Fehler beim Senden des Mails an '.$to.''; } } else { $message.='Es ist kein Review Team vorhanden'; } break; case 'prefs_requesttranslate': //Uebersetzer Informieren $content = new content(); $content->getContent($content_id, $sprache, $version); $oe = new organisationseinheit(); $oe_arr = $oe->getParents($content->oe_kurzbz); foreach($oe_arr as $organisationseinheit) { echo $organisationseinheit; $fkt = new benutzerfunktion(); $fkt->getBenutzerFunktionen('translate', $organisationseinheit); if(count($fkt->result)>0) break; } if(count($fkt->result)==0) $fkt->getBenutzerFunktionen('translate'); $to=''; foreach($fkt->result as $row) { if($to!='') $to.=','; $to .= $row->uid.'@'.DOMAIN; } if($to!='') { $from = 'no-reply@'.DOMAIN; $subject = 'CMS Review Request'; $text = "Dies ist eine automatisch generierte E-Mail.\n\n Es wurde ein Artikel angelegt/bearbeitet. Dieser kann nun übersetzt werden: '$content->titel'.\n \n (um den Link anzuzeigen müssen Sie in die HTML Ansicht wechseln) \n \n Mit freundlichen Grüßen\n \n FH Technikum Wien\n Hoechstaedtplatz 5, 1200 Wien, AUSTRIA"; $texthtml = "Dies ist eine automatisch generierte E-Mail.

Es wurde ein Artikel angelegt/bearbeitet. Dieser kann nun übersetzt werden: '$content->titel'

content_id."&sprache=$sprache&version=$version)&action=content\">zum Artikel

Mit freundlichen Grüßen

FH Technikum Wien
Hoechstaedtplatz 5, 1200 Wien, AUSTRIA "; $mail = new mail($to, $from, $subject, $text); $mail->setHTMLContent($texthtml); if($mail->send()) { $message.='Übersetzungsanforderung wurde an '.$to.' versendet'; } else { $message.='Fehler beim Senden des Mails an '.$to.''; } } else { $message.='Es ist kein Übersetzer eingetragen'; } break; case 'childs_add': //Untereintraege zuordnen if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } $content = new content(); $content->content_id = $content_id; $content->child_content_id = $_POST['child_content_id']; $content->insertamum = date('Y-m-d'); $content->insertvon = $user; $content->sort=$content->getMaxSort($content_id)+1; if($content->addChild()) $message.='Daten erfolgreich gespeichert'; else $message.=''.$content->errormsg.''; break; case 'childs_delete': //Untereintraege entfernen if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } if(isset($_GET['contentchild_id'])) { $contentchild_id = $_GET['contentchild_id']; $content = new content(); if($content->deleteChild($contentchild_id)) $message.='Zuordnung wurde erfolgreich entfernt'; else $message.=''.$content->errormsg.''; } else { $message.='Fehler: ID wurde nicht uebergeben'; } break; case 'childs_sort_up': //hochsortieren von Untereintraegen if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } if(isset($_GET['contentchild_id'])) { $contentchild_id = $_GET['contentchild_id']; $content = new content(); if($content->SortUp($contentchild_id)) $message.='Sortieren erfolgreich'; else $message.=''.$content->errormsg.''; } else { $message.='Fehler: ID wurde nicht uebergeben'; } break; case 'childs_sort_down': //runtersortieren von Untereintraegen if(!$rechte->isBerechtigt('basis/cms', null, 'su')) { $message.='Sie haben keine Berechtigung fuer diese Aktion'; break; } if(isset($_GET['contentchild_id'])) { $contentchild_id = $_GET['contentchild_id']; $content = new content(); if($content->SortDown($contentchild_id)) $message.='Sortieren erfolgrecih'; else $message.=''.$content->errormsg.''; } else { $message.='Fehler: ID wurde nicht uebergeben'; } break; default: break; } } //Menue Baum echo '

FH Complete CMS

'; $db = new basis_db(); echo ' Neuen Eintrag hinzufügen

Content | News '; $menu='content'; if(isset($_GET['menu'])) { $_SESSION['cms/menu']=$_GET['menu']; $menu=$_GET['menu']; } else { if(isset($_SESSION['cms/menu'])) $menu=$_SESSION['cms/menu']; else $menu='content'; } if($menu=='news') { $rootcontent = new content(); $rootcontent->getNews(); } else { $rootcontent = new content(); $rootcontent->getRootContent(); } foreach($rootcontent->result as $row) { $output=''; $output.= ''; $content = new content(); $content->getContent($row->content_id, $sprache, null, null, true); if($menu=='news' && $content->template_kurzbz!='news') continue; if($menu=='content' && $content->template_kurzbz=='news') continue; if($content->template_kurzbz=='news') { $output.= ''; } else { $output.= ''; $submenu_depth=0; $output .= drawsubmenu($row->content_id); } //Wenn im gesamten Subtree kein Eintrag vorhanden ist auf den eine Berechtigung vorhanden ist, //dann wird der ganze Subtree nicht angezeigt. if($output!='' && strstr($output,''; } echo '
'; $output.= drawmenulink($row->content_id, mb_substr($content->titel,0,15).' '.$datum_obj->formatDatum($content->insertamum,'d.m.Y'), $content->oe_kurzbz); $output.= '
'; $output.= drawmenulink($row->content_id, $content->titel, $content->oe_kurzbz); $output.= '
'; echo '
'; //Editieren if(!is_null($content_id) && $content_id!='') { echo '

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

'; $content = new content(); $oe = $content->getOrganisationseinheit($content_id); if(!in_array($oe, $berechtigte_oe)) die('Sie haben keine Berechtigung fuer diesen Eintrag'); drawheader(); echo '
'.$message.'
'; echo '

'; switch($action) { case 'prefs': print_prefs(); break; case 'content': print_content(); break; //case 'preview': // break; case 'rights': print_rights(); break; case 'childs': print_childs(); break; case 'history': print_history(); break; default: break; } } echo '
'; echo ' '; /******* FUNCTIONS **********/ /** * Header fuer Content */ function drawheader() { global $content_id, $action, $sprache, $version, $action; //vorhandene Versionen dieser Sprache anzeigen $content = new content(); $content->loadVersionen($content_id, $sprache); echo ''; echo '
'; echo 'Versionen: '; foreach($content->result as $row) { if($version=='') $version=$row->version; if($version==$row->version) $class='marked'; else $class=''; echo ' '; echo $row->version; echo ', '; } echo '
'; //vorhandene Sprachen dieses Contents anzeigen $content = new content(); if(!$vorhandene_sprachen = $content->getLanguages($content_id, $version)) die($content->errormsg); echo 'Sprachen: '; foreach($vorhandene_sprachen as $lang) { if($sprache==$lang) $class='marked'; else $class=''; echo ' '; //&version='.$version.' echo $lang; echo ','; } echo '
'; echo '
'; echo ''; echo '
'; echo '
'; $sprache_obj = new sprache(); $sprache_obj->getAll(); //Wenn noch nicht alle Uebersetzungen vorhanden sind, //wird ein Formular zum Erstellen der Uebersetzung angezeigt. if(count($vorhandene_sprachen)!=count($sprache_obj->result)) { echo '
'; echo 'Übersetzung in '; echo ''; echo '
'; } echo '

'; echo get_content_link('prefs','Eigenschaften').' | '; echo get_content_link('content','Inhalt').' | '; echo get_content_link('rights','Rechte').' | '; echo get_content_link('childs','Childs').' | '; echo get_content_link('history','History'); } /** * Gibt einen Menue Link aus * @param $id * @param $titel */ function drawmenulink($id, $titel, $oe_kurzbz) { global $content_id, $action, $sprache, $berechtigte_oe; if(in_array($oe_kurzbz, $berechtigte_oe)) return ''.$titel.' ('.$id.')'; else return $titel.' ('.$id.')'; } /** * Zeichnet ein Submenue unterhalb eines Contents * * @param $content_id Content ID des Parents * @param $einrueckung Einrueckungszeichen fuer den Content */ function drawsubmenu($content_id, $einrueckung="  ") { global $db, $action, $submenu_depth, $sprache; $output=''; $submenu_depth++; if($submenu_depth>10000) { echo 'Menürekursion?! -> Abbruch'; return 0; } $childcontent = new content(); $childcontent->getChilds($content_id); foreach($childcontent->result as $row) { $content = new content(); $content->getContent($row->content_id, $sprache, null, null, true); $output.= "\n"; $output.= ''; $output.= $einrueckung; $output.=drawmenulink($row->child_content_id, $content->titel, $content->oe_kurzbz); $output.=drawsubmenu($row->child_content_id, $einrueckung."  "); $output.= "\n"; $output.= "\n"; } return $output; } /** * Liefert den Link zum Anzeigen von Content Modulen * @param $key Action Key * @param $name Name des Links */ function get_content_link($key, $name) { global $action, $content_id, $sprache, $version; return ''.$name.''; } /** * Erstellt den Karteireiter zum Verwalten der Kindelemente eines Contents */ function print_childs() { global $content_id, $sprache, $version; $content = new content(); $content->getChilds($content_id); echo 'Folgende Einträge sind diesem Untergeordnet:

'; echo ' '; echo ''; foreach($content->result as $row) { $child = new content(); $child->getContent($row->child_content_id); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
Sortierung ID Titel
',$row->sort; echo ' up'; echo ' down'; echo '',$row->child_content_id,'',$child->titel,'
'; $content = new content(); $content->getpossibleChilds($content_id); echo '
'; echo ''; echo ''; echo '
'; } /** * Erstellt den Karteireiter zum Eintragen der Eigenschaften eines Contents * */ function print_prefs() { global $content_id, $sprache, $version, $user, $rechte; $content = new content(); if(!$content->getContent($content_id, $sprache, $version)) die($content->errormsg); echo '
Vorlage
Organisationseinheit
Aktiv aktiv?'checked':'').'>
Menü offen menu_open?'checked':'').'>
Beschreibung

Titel
Sichtbar sichtbar?'checked':'').'>
'; if($content->reviewvon!='') { $datum_obj = new datum(); echo 'Reviewed von '.$content->reviewvon.' am '.$datum_obj->formatDatum($content->reviewamum,'d.m.Y H:i'); } echo '      '; echo ''; $bf = new benutzerfunktion(); if($bf->benutzerfunktion_exists($user, 'review') || $rechte->isBerechtigt('basis/cms_review')) echo ''; echo ''; echo '
'; } /** * Erstellt den Karteireiter zum Verwalten der Zugriffsrechte auf einen Content * Zu einem Content können Gruppen zugeteilt werden. Diese haben dann zugriff auf den Content * Wenn keine Gruppen zugeordnet sind, können alle Personen auf den Content zugreifen */ function print_rights() { global $content_id, $sprache, $version; $content = new content(); $content->loadGruppen($content_id); if(count($content->result)>0) { echo 'Die Mitglieder der folgenden Gruppen dürfen die Seite ansehen:

'; echo ' '; echo ''; foreach($content->result as $row) { echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
Gruppe Kurzbz Bezeichnung
',$row->gruppe_kurzbz,'',$row->bezeichnung,'
'; } else echo 'Diese Seite darf von allen angezeigt werden!

'; $gruppe = new gruppe(); $gruppe->getgruppe(null, null, null, null, true); echo ''; echo 'Gruppe '; echo ''; echo '
'; } /** * Erstellt den Karteireiter zum Eintragen des Contents * * Hier wird Aufgrund der XSD Vorlage des Templates ein Formular erstellt und mit den * entsprechenden Werten des XML Files vorausgefuellt. * */ function print_content() { global $content_id, $sprache, $version, $user; $content = new content(); if(!$content->getContent($content_id, $sprache, $version)) die($content->errormsg); if($content->gesperrt_uid!='' && $content->gesperrt_uid!=$user) { $content->getSperrLog($content->contentsprache_id); echo "Dieser Content ist gesperrt von $content->uid seit $content->start!"; return 0; } echo '
'; if($content->gesperrt_uid=='') echo ''; else echo ''; echo '
'; if($content->gesperrt_uid!='' && $content->gesperrt_uid==$user) { echo '
'; $template = new template(); $template->load($content->template_kurzbz); $xfp = new XSDFormPrinter(); $xfp->getparams='?content_id='.$content_id.'&sprache='.$sprache.'&version='.$version.'&action=content'; $xfp->output($template->xsd,$content->content); echo '
'; } echo '

Vorschau

'; //Bei Redirects wird die Vorschau nicht im IFrame gezeigt, da durch eventuelles weiterleiten durch // Javascript in der Vorschau die CMS Seite geschlossen wird. if($content->template_kurzbz=='redirect') echo 'Vorschau in eigenem Fenster öffnen'; else echo '