- Phrasen Modul

- DMS Anzeige der Dokumente in Listenform
- History und Diff für CMS Modul
This commit is contained in:
Andreas Österreicher
2011-04-18 14:21:15 +00:00
parent 6008008569
commit 5352c6e139
20 changed files with 2143 additions and 83 deletions
+145 -17
View File
@@ -25,9 +25,11 @@ 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/xsdformprinter/xsdformprinter.php');
require_once('../include/organisationseinheit.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/DifferenceEngine/DifferenceEngine.php');
$user = get_uid();
@@ -57,7 +59,7 @@ if(!$rechte->isBerechtigt('basis/cms'))
mode : "textareas",
theme : "advanced",
file_browser_callback: "FHCFileBrowser",
plugins : "spellchecker,pagebreak,style,layer,table,advhr,advimage,advlink,inlinepopups,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras",
// Theme options
@@ -78,7 +80,7 @@ if(!$rechte->isBerechtigt('basis/cms'))
tinyMCE.activeEditor.windowManager.open({
file: cmsURL,
title : "FHComplete File Browser",
width: 550,
width: 750,
height: 550,
resizable: "yes",
close_previous: "no",
@@ -96,11 +98,13 @@ if(!$rechte->isBerechtigt('basis/cms'))
<body>
<?php
$sprache = isset($_GET['sprache'])?$_GET['sprache']:'German';
$sprache = isset($_GET['sprache'])?$_GET['sprache']:DEFAULT_LANGUAGE;
$version = isset($_GET['version'])?$_GET['version']:null;
$content_id = isset($_GET['content_id'])?$_GET['content_id']:null;
$action = isset($_GET['action'])?$_GET['action']:'';
$method = isset($_GET['method'])?$_GET['method']:null;
$message = '';
$submenu_depth=0;
//Inhalt Speichern
if(isset($_POST['XSDFormPrinter_XML']))
@@ -115,9 +119,9 @@ if(isset($_POST['XSDFormPrinter_XML']))
$message.= '<span class="error">'.$content->errormsg.'</span>';
}
if(isset($_GET['method']))
if(!is_null($method))
{
switch($_GET['method'])
switch($method)
{
case 'add_new_content':
$oe = new organisationseinheit();
@@ -269,6 +273,7 @@ if($result = $db->db_query($qry))
echo '<td>';
drawmenulink($row->content_id, $row->titel);
echo '</td>';
$submenu_depth=0;
drawsubmenu($row->content_id);
echo '</tr>';
}
@@ -282,11 +287,13 @@ echo '</td><td valign="top">';
//Editieren
if(!is_null($content_id))
{
echo '<a href="'.$_SERVER['PHP_SELF'].'?action=prefs&content_id='.$content_id.'" '.($action=='prefs'?'class="marked"':'').'>Eigenschaften</a>';
echo ' | <a href="'.$_SERVER['PHP_SELF'].'?action=content&content_id='.$content_id.'" '.($action=='content'?'class="marked"':'').'>Inhalt</a>';
echo ' | <a href="'.$_SERVER['PHP_SELF'].'?action=preview&content_id='.$content_id.'" '.($action=='preview'?'class="marked"':'').'>Vorschau</a>';
echo ' | <a href="'.$_SERVER['PHP_SELF'].'?action=rights&content_id='.$content_id.'" '.($action=='rights'?'class="marked"':'').'>Rechte</a>';
echo ' | <a href="'.$_SERVER['PHP_SELF'].'?action=childs&content_id='.$content_id.'" '.($action=='childs'?'class="marked"':'').'>Childs</a>';
echo get_content_link('prefs','Eigenschaften').' | ';
echo get_content_link('content','Inhalt').' | ';
echo get_content_link('preview','Vorschau').' | ';
echo get_content_link('rights','Rechte').' | ';
echo get_content_link('childs','Childs').' | ';
echo get_content_link('history','History');
echo '<div style="float: right;">'.$message.'</div>';
echo '<br><br>';
@@ -300,7 +307,7 @@ if(!is_null($content_id))
print_content();
break;
case 'preview':
echo '<iframe src="content.php?content_id='.$content_id.'&version='.$version.'" style="width: 600px; height: 500px; border: 1px solid black;">';
echo '<iframe src="content.php?content_id='.$content_id.'&version='.$version.'&sprache='.$sprache.'" style="width: 600px; height: 500px; border: 1px solid black;">';
break;
case 'rights':
print_rights();
@@ -308,6 +315,9 @@ if(!is_null($content_id))
case 'childs':
print_childs();
break;
case 'history':
print_history();
break;
default: break;
}
@@ -317,16 +327,33 @@ echo '</body>
</html>';
/******* FUNCTIONS **********/
/**
* Gibt einen Menue Link aus
* @param $id
* @param $titel
*/
function drawmenulink($id, $titel)
{
global $content_id, $action, $sprache, $version;
echo '<a href="admin.php?content_id='.$id.'&action='.$action.'&sprache='.$sprache.'&version='.$version.'" '.($content_id==$id?'class="marked"':'').'>'.$titel.'</a> ('.$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="&nbsp;&nbsp;")
{
global $db, $action;
global $db, $action, $submenu_depth;
$submenu_depth++;
if($submenu_depth>20)
{
echo 'Menürekursion?! -> Abbruch';
return 0;
}
$qry = "SELECT
tbl_contentchild.content_id,
tbl_contentchild.child_content_id,
@@ -343,7 +370,6 @@ function drawsubmenu($content_id, $einrueckung="&nbsp;&nbsp;")
while($row = $db->db_fetch_object($result))
{
//$vorhanden[]=$row->child_content_id;
echo "<tr>\n";
echo '<td>';
echo $einrueckung;
@@ -352,12 +378,24 @@ function drawsubmenu($content_id, $einrueckung="&nbsp;&nbsp;")
echo "</td>\n";
echo "</tr>\n";
}
//echo '<br>';
}
}
}
/**
* 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;
return '<a href="'.$_SERVER['PHP_SELF'].'?action='.$key.'&content_id='.$content_id.'" '.($action==$key?'class="marked"':'').'>'.$name.'</a>';
}
/**
* Erstellt den Karteireiter zum Verwalten der Kindelemente eines Contents
*/
function print_childs()
{
global $content_id, $sprache, $version;
@@ -401,7 +439,7 @@ function print_childs()
echo '</tbody></table>';
$content = new content();
$content->getAll();
$content->getpossibleChilds($content_id);
echo '<form action="'.$_SERVER['PHP_SELF'].'?content_id='.$content_id.'&sprache='.$sprache.'&version='.$version.'&action=childs&method=childs_add" method="POST">';
echo '<select name="child_content_id">';
@@ -414,6 +452,10 @@ function print_childs()
echo '</form>';
}
/**
* Erstellt den Karteireiter zum Eintragen der Eigenschaften eines Contents
*
*/
function print_prefs()
{
global $content_id, $sprache, $version;
@@ -482,6 +524,11 @@ function print_prefs()
}
/**
* 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;
@@ -542,6 +589,13 @@ function print_rights()
echo '</form>';
}
/**
* 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;
@@ -560,4 +614,78 @@ function print_content()
$xfp->output($template->xsd,$content->content);
echo '</div>';
}
/**
* Zeigt die Historie eines Contents an.
*
*/
function print_history()
{
global $content_id, $sprache, $version, $method;
if($method=='history_changes')
{
if(!isset($_GET['v1']) || !isset($_GET['v2']))
{
echo 'Invalid Parameter';
return false;
}
$v1 = $_GET['v1'];
$v2 = $_GET['v2'];
$content_old = new content();
$content_old->getContent($content_id, $sprache, $v1);
$dom = new DOMDocument();
$dom->loadXML($content_old->content);
$content_old = $dom->getElementsByTagName('inhalt')->item(0)->nodeValue;
$content_new = new content();
$content_new->getContent($content_id, $sprache, $v2);
$dom = new DOMDocument();
$dom->loadXML($content_new->content);
$content_new = $dom->getElementsByTagName('inhalt')->item(0)->nodeValue;
$arr_old = explode("\n",trim($content_old));
$arr_new = explode("\n",trim($content_new));
$diff = new Diff($arr_new, $arr_old);
$tdf = new TableDiffFormatter();
echo '<table>';
echo html_entity_decode($tdf->format($diff));
echo '</table>';
}
else
{
$content = new content();
$content->loadVersionen($content_id, $sprache);
$datum_obj = new datum();
echo '<h3>Versionen</h3>';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">';
echo '
<input type="hidden" name="action" value="history">
<input type="hidden" name="method" value="history_changes">
<input type="hidden" name="sprache" value="'.$sprache.'">
<input type="hidden" name="version" value="'.$version.'">
<input type="hidden" name="content_id" value="'.$content_id.'">';
echo 'Änderungen von Version
<input type="text" value="1" size="2" name="v1"> zu
<input type="text" value="2" size="2" name="v2">
<input type="submit" value="Anzeigen">
</form>';
echo '<ul>';
foreach($content->result as $row)
{
echo '<li>';
echo '<b>Version '.$row->version.'</b><br>Erstellt am '.$datum_obj->formatDatum($row->insertamum,'d.m.Y').' von '.$row->insertvon;
if($row->updateamum!='' || $row->updatevon!='')
echo '<br>Letzte Änderung von '.$row->updatevon.' am '.$datum_obj->formatDatum($row->updateamum,'d.m.Y');
if($row->reviewvon!='' || $row->reviewamum!='')
echo '<br>Review von '.$row->reviewvon.' am '.$datum_obj->formatDatum($row->reviewamum,'d.m.Y');
echo '<br><br>';
echo '</li>';
}
echo '</ul>';
}
}
?>
+1 -2
View File
@@ -34,8 +34,7 @@ else
die('ContentID muss uebergeben werden');
$version = (isset($_GET['version'])?$_GET['version']:null);
$sprache = getSprache();
$sprache = (isset($_GET['sprache'])?$_GET['sprache']:getSprache());
//XML Content laden
$content = new content();
+160 -54
View File
@@ -23,14 +23,17 @@ require_once('../config/cis.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/dms.class.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//DE"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>FHComplete Document Management System</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../skin/superfish.css" type="text/css">
<link rel="stylesheet" href="../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../skin/style.css.php" type="text/css">
<script type="text/javascript" src="../include/js/jquery.js"></script>
<script type="text/javascript" src="../include/js/superfish.js"></script>
<script type="text/javascript" src="../include/tiny_mce/tiny_mce_popup.js"></script>
<script type="text/javascript">
var FileBrowserDialog={
@@ -59,11 +62,12 @@ require_once('../include/dms.class.php');
}
};
tinyMCEPopup.onInit.add(FileBrowserDialog.init, FileBrowserDialog);
//tinyMCEPopup.onInit.add(FileBrowserDialog.init, FileBrowserDialog);
$(document).ready(function()
{
$('#divupload').hide();
jQuery('ul.sf-menu').superfish({speed:'fast', delay:200});
});
function upload(id, name)
@@ -88,6 +92,7 @@ require_once('../include/dms.class.php');
<?php
$user = get_uid();
$kategorie_kurzbz = isset($_REQUEST['kategorie_kurzbz'])?$_REQUEST['kategorie_kurzbz']:'';
$searchstring = isset($_REQUEST['searchstring'])?$_REQUEST['searchstring']:'';
$mimetypes = array(
'application/pdf'=>'pdf.ico',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'=>'word2007.jpg',
@@ -147,69 +152,40 @@ if(isset($_POST['fileupload']))
}
}
echo '<h1>Dokument Auswählen</h1>
<table>
<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
<input type="text" name="searchstring" value="'.$searchstring.'">
<input type="submit" value="Suchen">
</form>
<table cellspacing=0>
<tr>
<td valign="top" nowrap>
<b>Kategorie:</b><br>';
<td valign="top" nowrap style="border-right: 1px solid lightblue;border-top: 1px solid lightblue;padding-right:5px">
<h3>Kategorie:</h3>
';
//Kategorien anzeigen
$dms = new dms();
$dms->getKategorie();
foreach($dms->result as $row)
{
if($kategorie_kurzbz=='')
$kategorie_kurzbz=$row->kategorie_kurzbz;
if($kategorie_kurzbz==$row->kategorie_kurzbz)
$class='class="marked"';
else
$class='';
echo '
<a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$row->kategorie_kurzbz.'" '.$class.'>';
echo $row->bezeichnung.'</a><br>';
}
echo '
</td>
<td valign="top">';
drawKategorieMenue($dms->result);
echo '</td>
<td valign="top" style="border-top: 1px solid lightblue; width: 100%;">';
//Dokumente der Ausgewaehlten Kategorie laden und Anzeigen
$dms = new dms();
$dms->getDocuments($kategorie_kurzbz);
if($searchstring!='')
{
$dms->search($searchstring);
}
else
{
$dms->getDocuments($kategorie_kurzbz);
}
//drawFilesThumb($dms->result);
drawFilesList($dms->result);
echo '
<table>
<tr>';
$anzahl=0;
foreach($dms->result as $row)
{
if($anzahl>2)
{
echo "
</tr>
<tr>";
$anzahl=0;
}
echo '
<td>';
echo '<a href="id://'.$row->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$row->dms_id.'); return false;" style="font-size: small" title="'.$row->beschreibung.'">';
echo '<center>';
if(array_key_exists($row->mimetype,$mimetypes))
echo '<img src="../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 15px">';
else
echo '<img src="dms.php?id='.$row->dms_id.'&amp;notimeupdate" style="max-width: 100px">';
echo '<br>'.$row->name.'</a><br>';
//Upload einer neuen Version
echo '<a href="id://'.$row->dms_id.'/Upload" onclick="return upload(\''.$row->dms_id.'\',\''.$row->name.'\')" style="font-size:small">Upload</a> ';
echo '</center></td>';
$anzahl++;
}
echo '
</tr>
</table>
</td>
</tr>
</table>
@@ -229,6 +205,136 @@ echo '
<input type="submit" name="fileupload" value="Upload">
</form>
</div>';
/************ FUNCTIONS ********************/
/**
* Zeichnet das Kategorie Menu
*
* @param $rows DMS Result Object
*/
function drawKategorieMenue($rows)
{
global $kategorie_kurzbz;
echo '<ul>';
foreach($rows as $row)
{
if($kategorie_kurzbz=='')
$kategorie_kurzbz=$row->kategorie_kurzbz;
if($kategorie_kurzbz==$row->kategorie_kurzbz)
$class='class="marked"';
else
$class='';
echo '<li>
<a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$row->kategorie_kurzbz.'" '.$class.'>';
echo $row->bezeichnung.'</a>';
$dms = new dms();
$dms->getKategorie($row->kategorie_kurzbz);
if(count($dms->result)>0)
drawKategorieMenue($dms->result);
echo '</li>';
}
echo '
</ul>';
}
/**
* Zeichnet die Files in Listenform
*
* @param $rows DMS Result Object
*/
function drawFilesList($rows)
{
global $mimetypes;
echo '
<table>
';
foreach($rows as $row)
{
echo '
<tr>
<td>';
if(array_key_exists($row->mimetype,$mimetypes))
echo '<img src="../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 15px">';
else
echo '<img src="../skin/images/blank.png" style="height: 15px">';
echo'
<a href="id://'.$row->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$row->dms_id.'); return false;" style="font-size: small" title="'.$row->beschreibung.'">
'.$row->name.'</a>
</td>
<td>';
//Upload einer neuen Version
echo '<ul class="sf-menu">
<li><a href="id://'.$row->dms_id.'/Erweitert" style="font-size:small">Erweitert</a>
<ul>
<li><a href="id://'.$row->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$row->dms_id.');" style="font-size:small">Auswählen</a></li>
<li><a href="dms.php?id='.$row->dms_id.'" style="font-size:small" target="_blank">Herunterladen</a></li>
<li><a href="id://'.$row->dms_id.'/Upload" onclick="return upload(\''.$row->dms_id.'\',\''.$row->name.'\')" style="font-size:small">Neue Version hochladen</a></li>
<li><a href="id://'.$row->dms_id.'/ShowAll" onclick="return upload(\''.$row->dms_id.'\',\''.$row->name.'\')" style="font-size:small" >Alle Versionen anzeigen</a></li>
</ul>
</li>
</ul>';
echo '</td>
</tr>';
}
echo '
</table>';
}
/**
* Zeichnet die Files mit Vorschau
*
* @param $rows DMS Result Object
*/
function drawFilesThumb($rows)
{
global $mimetypes;
echo '
<table>
<tr>';
$anzahl=0;
foreach($rows as $row)
{
if($anzahl>2)
{
echo "
</tr>
<tr>";
$anzahl=0;
}
echo '
<td>';
echo '<center>';
echo '<a href="id://'.$row->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$row->dms_id.'); return false;" style="font-size: small" title="'.$row->beschreibung.'">';
if(array_key_exists($row->mimetype,$mimetypes))
echo '<img src="../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 15px">';
else
echo '<img src="dms.php?id='.$row->dms_id.'&amp;notimeupdate" style="max-width: 100px">';
echo '</a><br>';
//echo '<br>'.$row->name.'</a>';
//Upload einer neuen Version
echo '<ul class="sf-menu">
<li><a href="id://'.$row->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$row->dms_id.');" style="font-size:small">'.$row->name.'</a>
<ul>
<li><a href="id://'.$row->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$row->dms_id.');" style="font-size:small">Auswählen</a></li>
<li><a href="dms.php?id='.$row->dms_id.'" style="font-size:small" target="_blank">Herunterladen</a></li>
<li><a href="id://'.$row->dms_id.'/Upload" onclick="return upload(\''.$row->dms_id.'\',\''.$row->name.'\')" style="font-size:small">Neue Version hochladen</a></li>
<li><a href="id://'.$row->dms_id.'/ShowAll" onclick="return upload(\''.$row->dms_id.'\',\''.$row->name.'\')" style="font-size:small" >Alle Versionen anzeigen</a></li>
</ul>
</li>
</ul>';
echo '</center></td>';
$anzahl++;
}
echo '
</tr>
</table>';
}
?>
</body>
</html>
+3
View File
@@ -95,6 +95,9 @@ define('DEFAULT_STYLE','tw');
//Layout Wechsel im CIS moeglich?
define('CHOOSE_LAYOUT',false);
//Default Sprache
define('DEFAULT_LANGUAGE','German');
// MAIL Adressen
define('MAIL_DEBUG','oesi@technikum-wien.at');
define('MAIL_GST','pam@technikum-wien.at,oesi@technikum-wien.at');
File diff suppressed because it is too large Load Diff
+95
View File
@@ -495,6 +495,58 @@ class content extends basis_db
}
}
/**
* Laedt alle Content Eintraege die fuer den uebergeben Content als
* Childnodes infrage kommen.
* Eintraege bei denen es zu einer Rekursion im Tree kommen koennte werden
* nicht geliefert
*/
public function getpossibleChilds($content_id)
{
$qry = "SELECT
*
FROM
campus.tbl_content
WHERE
content_id NOT IN(
WITH RECURSIVE parents(content_id, child_content_id) as
(
SELECT content_id, child_content_id FROM campus.tbl_contentchild
WHERE child_content_id='".addslashes($content_id)."'
UNION ALL
SELECT cc.content_id, cc.child_content_id FROM campus.tbl_contentchild cc, parents
WHERE cc.child_content_id=parents.content_id
)
SELECT content_id
FROM parents
GROUP BY content_id)
AND content_id<>'".addslashes($content_id)."'";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new content();
$obj->content_id = $row->content_id;
$obj->titel = $row->titel;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->template_kurzbz = $row->template_kurzbz;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden des Contents';
return false;
}
}
/**
* Loescht eine Contentzuordnung
*
@@ -539,5 +591,48 @@ class content extends basis_db
return false;
}
}
/**
* Liefert die Versionen des Contents
*
* @param $content_id
*/
public function loadVersionen($content_id, $sprache)
{
$qry = "SELECT
contentsprache_id, sprache, content_id, version, sichtbar, reviewamum, reviewvon,
updateamum, updatevon, insertamum, insertvon
FROM campus.tbl_contentsprache
WHERE content_id='".addslashes($content_id)."' AND sprache='".addslashes($sprache)."'
ORDER BY version DESC";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new content();
$obj->contentsprache_id = $row->contentsprache_id;
$obj->sprache = $row->sprache;
$obj->content_id = $row->content_id;
$obj->version = $row->version;
$obj->sichtbar = ($row->sichtbar=='t'?true:false);
$obj->reviewvon = $row->reviewvon;
$obj->reviewamum = $row->reviewamum;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$this->result[] = $obj;
}
return false;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+52 -2
View File
@@ -220,9 +220,15 @@ class dms extends basis_db
* Laedt alle Kategorien
* @return boolean
*/
public function getKategorie()
public function getKategorie($parent_kategorie_kurzbz='')
{
$qry = "SELECT * FROM campus.tbl_dms_kategorie ORDER BY bezeichnung";
$qry = "SELECT * FROM campus.tbl_dms_kategorie WHERE ";
if($parent_kategorie_kurzbz!='')
$qry.=" parent_kategorie_kurzbz='".addslashes($parent_kategorie_kurzbz)."'";
else
$qry.=" parent_kategorie_kurzbz is null";
$qry.=" ORDER BY bezeichnung";
if($result = $this->db_query($qry))
{
@@ -287,5 +293,49 @@ class dms extends basis_db
return false;
}
}
/**
* Sucht nach Dokumenten
*
* @param $kategorie_kurzbz
*/
public function search($suchstring)
{
$qry = "SELECT * FROM campus.tbl_dms where (dms_id, version) in(
SELECT dms_id, max(version)
FROM campus.tbl_dms
WHERE lower(name) like lower('%".addslashes($suchstring)."%')
OR lower(beschreibung) like lower('%".addslashes($suchstring)."%')
GROUP BY dms_id)
ORDER BY name;";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new dms();
$obj->dms_id = $row->dms_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->dokument_kurzbz = $row->dokument_kurzbz;
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
$obj->filename = $row->filename;
$obj->mimetype = $row->mimetype;
$obj->name = $row->name;
$obj->beschreibung = $row->beschreibung;
$obj->letzterzugriff = $row->letzterzugriff;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$this->result[] = $obj;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+19 -1
View File
@@ -843,8 +843,26 @@ function getSprache()
}
else
{
$sprache='German';
if(isset($_COOKIE['FHC_SPRACHE']))
{
$sprache=$_COOKIE['FHC_SPRACHE'];
}
else
{
$sprache=DEFAULT_LANGUAGE;
}
setSprache($sprache);
}
return $sprache;
}
/**
* Setzt die Sprache in der Session Variable und im Cookie
* @param $sprache
*/
function setSprache($sprache)
{
$SESSION['FHC_SPRACHE']=$sprache;
setcookie('FHC_SPRACHE',$sprache,time()+60*60*24*30,'/');
}
?>
+121
View File
@@ -0,0 +1,121 @@
/*
* Superfish v1.4.8 - jQuery menu widget
* Copyright (c) 2008 Joel Birch
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
*/
;(function($){
$.fn.superfish = function(op){
var sf = $.fn.superfish,
c = sf.c,
$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
over = function(){
var $$ = $(this), menu = getMenu($$);
clearTimeout(menu.sfTimer);
$$.showSuperfishUl().siblings().hideSuperfishUl();
},
out = function(){
var $$ = $(this), menu = getMenu($$), o = sf.op;
clearTimeout(menu.sfTimer);
menu.sfTimer=setTimeout(function(){
o.retainPath=($.inArray($$[0],o.$path)>-1);
$$.hideSuperfishUl();
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
},o.delay);
},
getMenu = function($menu){
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
sf.op = sf.o[menu.serial];
return menu;
},
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
return this.each(function() {
var s = this.serial = sf.o.length;
var o = $.extend({},sf.defaults,op);
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
$(this).addClass([o.hoverClass,c.bcClass].join(' '))
.filter('li:has(ul)').removeClass(o.pathClass);
});
sf.o[s] = sf.op = o;
$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
if (o.autoArrows) addArrow( $('>a:first-child',this) );
})
.not('.'+c.bcClass)
.hideSuperfishUl();
var $a = $('a',this);
$a.each(function(i){
var $li = $a.eq(i).parents('li');
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
});
o.onInit.call(this);
}).each(function() {
var menuClasses = [c.menuClass];
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
$(this).addClass(menuClasses.join(' '));
});
};
var sf = $.fn.superfish;
sf.o = [];
sf.op = {};
sf.IE7fix = function(){
var o = sf.op;
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
this.toggleClass(sf.c.shadowClass+'-off');
};
sf.c = {
bcClass : 'sf-breadcrumb',
menuClass : 'sf-js-enabled',
anchorClass : 'sf-with-ul',
arrowClass : 'sf-sub-indicator',
shadowClass : 'sf-shadow'
};
sf.defaults = {
hoverClass : 'sfHover',
pathClass : 'overideThisToUse',
pathLevels : 1,
delay : 800,
animation : {opacity:'show'},
speed : 'normal',
autoArrows : true,
dropShadows : true,
disableHI : false, // true disables hoverIntent detection
onInit : function(){}, // callback functions
onBeforeShow: function(){},
onShow : function(){},
onHide : function(){}
};
$.fn.extend({
hideSuperfishUl : function(){
var o = sf.op,
not = (o.retainPath===true) ? o.$path : '';
o.retainPath = false;
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
.find('>ul').hide().css('visibility','hidden');
o.onHide.call($ul);
return this;
},
showSuperfishUl : function(){
var o = sf.op,
sh = sf.c.shadowClass+'-off',
$ul = this.addClass(o.hoverClass)
.find('>ul:hidden').css('visibility','visible');
sf.IE7fix.call($ul);
o.onBeforeShow.call($ul);
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
return this;
}
});
})(jQuery);
+109
View File
@@ -0,0 +1,109 @@
<?php
/* Copyright (C) 2011 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Karl Burkhart <burkhart@technikum-wien.at>.
*/
/**
* Phrasen fuer Mehrsprachigkeit
*
* Diese Klasse liefert Phrasen fuer dynamische Seiten in der ausgewaehlten Sprache.
* Die Phrasen werden im Filesystem nach Modulen getrennt abgelegt und bei Bedarf geladen.
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/functions.inc.php');
require_once(dirname(__FILE__).'/sprache.class.php');
class phrasen extends basis_db
{
public $sprache='';
protected $phrasen=array();
protected $loadedModules=array();
/**
* Konstruktor
*
* @param $sprache Wenn keine Sprache uebergeben wird, wird die Default Sprache aus der Config verwendet
*/
public function __construct($sprache=null)
{
parent::__construct();
if($sprache=='')
$sprache=DEFAULT_LANGUAGE;
$this->sprache = $sprache;
}
/**
* Laedt ein Sprachmodul
* Zuerst wird die Default Sprache des Moduls geladen. Danach die zugehoerige Sprache
* Dadurch werden die Phrasen die nicht vorhanden sind automatisch in der Default Sprache angezeigt
*
* @param $module Name des Moduls
*/
public function loadModule($module)
{
$sprache = new sprache();
$sprache->load(DEFAULT_LANGUAGE);
//Default Sprache laden
$filename = dirname(__FILE__).'/../locale/cms/'.$sprache->locale.'/'.$module.'.php';
if(file_exists($filename))
include($filename);
$sprache = new sprache();
$sprache->load($this->sprache);
//Anzeigesprache laden
$filename = dirname(__FILE__).'/../locale/cms/'.$sprache->locale.'/'.$module.'.php';
if(file_exists($filename))
include($filename);
$this->loadedModules[]=$module;
}
/**
* Prueft ob das Modul des Keys bereits geladen wurde und laedt dieses wenn noetig
*
* @param $key der Phrase
*/
public function checkModule($key)
{
$module = mb_substr($key, 0, mb_strpos($key,'/'));
if(!in_array($module, $this->loadedModules))
$this->loadModule($module);
}
/**
* Liefert eine Phrase in der eingestellten Sprache
*
* Die Phrasen koennen Platzhalter fuer Variablen enthalten. Diese Variablen koennen als Array
* mit den 2. Parameter uebergeben werden.
*
* Um in der Phrase die Reihenfolge der Variablen zu tauschen kann folgendes verwendet werden: "%x$s"
* Wobei x durch den Index+1 im Array zu ersetzten ist. zB "%2$s" um die Variable $value[1] auszugeben
* naehere Infos siehe sprintf
*
* @param $key Key der Phrase
* @param $value Array mit Parametern fuer die Phrase
*/
public function t($key, $value=array())
{
$this->checkModule($key);
$string = isset($this->phrasen[$key])?$this->phrasen[$key]:'[[PHRASE:'.$key.']]';
return vsprintf($string, $value);
}
}
?>
+1 -1
View File
@@ -55,7 +55,7 @@ class sprache extends basis_db
*/
public function load($sprache)
{
$qry = "SELECT * from public.tbl_sprache WHERE sprache = ".addslashes($sprache)."; ";
$qry = "SELECT * FROM public.tbl_sprache WHERE sprache = '".addslashes($sprache)."';";
if(!$this->db_query($qry))
{
+12
View File
@@ -0,0 +1,12 @@
<?php
$this->phrasen['global/Studiengang']='Studiengang';
$this->phrasen['global/Institut']='Institut';
$this->phrasen['global/Semester']='Semester';
$this->phrasen['global/Studienzentrum']='Studienzentrum';
$this->phrasen['global/Studiengangsleitung']='Studiengangsleitung';
$this->phrasen['global/Lehrveranstaltung']='Lehrveranstaltung';
$this->phrasen['global/speichern']='Speichern';
$this->phrasen['global/loeschen']='Löschen';
$this->phrasen['global/editieren']='Editieren';
?>
+6
View File
@@ -0,0 +1,6 @@
<?php
$this->phrasen['news/verwaltungstools']='Verwaltungstools';
$this->phrasen['news/newsverwaltung']='Newsverwaltung';
$this->phrasen['news/neuereintrag']='Neuen Eintrag anlegen';
$this->phrasen['news/verfasser']='Verfasser';
?>
+12
View File
@@ -0,0 +1,12 @@
<?php
$this->phrasen['global/Studiengang']='Degree-Programme';
$this->phrasen['global/Institut']='Institute';
$this->phrasen['global/Semester']='Semester';
$this->phrasen['global/Studienzentrum']='Study Center';
$this->phrasen['global/Studiengangsleitung']='Head of Department';
$this->phrasen['global/Lehrveranstaltung']='Subject';
$this->phrasen['global/speichern']='Save';
$this->phrasen['global/loeschen']='Delete';
$this->phrasen['global/editieren']='Edit';
?>
+6
View File
@@ -0,0 +1,6 @@
<?php
$this->phrasen['news/verwaltungstools']='Managementtools';
$this->phrasen['news/newsverwaltung']='Newsmanagement';
$this->phrasen['news/neuereintrag']='Create a new Entry';
$this->phrasen['news/verfasser']='Author';
?>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

+24 -6
View File
@@ -44,7 +44,7 @@ img
height:86%;
z-index:1000;
}
/*Alle außer IE 6*/
/*Alle auer IE 6*/
html>body #menue
{
position:absolute;
@@ -56,7 +56,7 @@ html>body #menue
height:82%;
left:20%;
}
/*Alle außer IE 6*/
/*Alle auer IE 6*/
html>body #content
{
position:absolute;
@@ -270,7 +270,7 @@ TABLE#tabterm
}
td.ContentHeader
{
background-color: #008381; /*grün*/
background-color: #008381; /*grn*/
font-weight: bold;
height: 19px;
}
@@ -361,11 +361,11 @@ TR.liste
}
TR.liste0
{
background-color: #FFFFFF; /*weiß*/
background-color: #FFFFFF; /*wei*/
}
TR.liste1
{
background-color: #EEEEEE; /*grau fast weiß*/
background-color: #EEEEEE; /*grau fast wei*/
}
TR.tryellow
{
@@ -397,7 +397,7 @@ TABLE#zeitsperren TD.feiertag
}
TABLE#zeitsperren TD
{
background-color: #EEEEEE /*grau fast weiß*/
background-color: #EEEEEE /*grau fast wei*/
}
/* Stundeplan */
@@ -641,4 +641,22 @@ img#layout
option.inactive
{
text-decoration:line-through;
}
/* Difference Engine */
.diffchange-inline
{
background-color: yellow;
}
.diff-deletedline
{
background-color: lightgray;
}
.diff-marker
{
background-color: none;
}
.diff-addedline
{
background-color: lightgreen;
}
+136
View File
@@ -0,0 +1,136 @@
/*** ESSENTIAL STYLES ***/
.sf-menu, .sf-menu * {
margin: 0;
padding: 0;
list-style: none;
}
.sf-menu {
line-height: 1.0;
}
.sf-menu ul {
position: absolute;
top: -999em;
width: 10em; /* left offset of submenus need to match (see below) */
}
.sf-menu ul li {
width: 100%;
}
.sf-menu li:hover {
visibility: inherit; /* fixes IE7 'sticky bug' */
}
.sf-menu li {
float: left;
position: relative;
}
.sf-menu a {
display: block;
position: relative;
}
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
left: 0;
top: 20px;/*2.5em; /* match top ul list item height */
z-index: 99;
}
ul.sf-menu li:hover li ul,
ul.sf-menu li.sfHover li ul {
top: -999em;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
left: 10em; /* match ul width */
top: 0;
}
ul.sf-menu li li:hover li ul,
ul.sf-menu li li.sfHover li ul {
top: -999em;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
left: 10em; /* match ul width */
top: 0;
}
/*** DEMO SKIN ***/
.sf-menu {
float: left;
/*margin-bottom: 1em;*/
}
.sf-menu a {
border-left: 1px solid #fff;
border-top: 1px solid #CFDEFF;
padding: 3px 3px;
text-decoration:none;
}
.sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/
color: #13a;
}
.sf-menu li {
/*background: #BDD2FF;*/
}
.sf-menu li li {
background: #AABDE6;
}
.sf-menu li li li {
background: #9AAEDB;
}
.sf-menu li:hover, .sf-menu li.sfHover,
.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
background: #CFDEFF;
outline: 0;
}
/*** arrows **/
.sf-menu a.sf-with-ul {
padding-right: 2.25em;
min-width: 1px; /* trigger IE7 hasLayout so spans position accurately */
}
.sf-sub-indicator {
position: absolute;
display: block;
right: .75em;
top: 1.05em; /* IE6 only */
width: 10px;
height: 10px;
text-indent: -999em;
overflow: hidden;
background: url('images/superfish-arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: 5px;
background-position: 0 -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
background-position: -10px -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.sf-menu ul .sf-sub-indicator { background-position: -10px 0; }
.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; }
/* apply hovers to modern browsers */
.sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: -10px 0; /* arrow hovers for modern browsers*/
}
/*** shadows for all but IE6 ***/
.sf-shadow ul {
background: url('images/superfish-shadow.png') no-repeat bottom right;
padding: 0 8px 9px 0;
-moz-border-radius-bottomleft: 17px;
-moz-border-radius-topright: 17px;
-webkit-border-top-right-radius: 17px;
-webkit-border-bottom-left-radius: 17px;
}
.sf-shadow ul.sf-shadow-off {
background: transparent;
}