This commit is contained in:
Stefan Puraner
2015-12-03 10:49:00 +01:00
parent 1f3fba3d19
commit 1cb82aa653
1163 changed files with 122787 additions and 23631 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
.htaccess
/nbproject/
/vendor/*
!/vendor/easyui
!/vendor/FHC-vendor
/.idea/
documents/
.settings
+2
View File
@@ -99,6 +99,8 @@ if(isset($_GET['uid']))
else
$getParam = "";
}
else
$getParam='';
$datum_obj = new datum();
+4 -1
View File
@@ -483,7 +483,10 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id)
if(bemerkungen === undefined)
bemerkungen = "von Lektor hinzugefügt";
var studienverpflichtung_id = $("#studienverpflichtung option:selected").val();
var studienverpflichtung_id = null;
if($("#studienverpflichtung").length)
studienverpflichtung_id = $("#studienverpflichtung option:selected").val();
console.log(studienverpflichtung_id);
$.ajax({
@@ -537,45 +537,58 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
}
if($prestudent_id != "")
{
$anrechnung->lehrveranstaltung_id = $lehrveranstaltung->lehrveranstaltung_id;
$anrechnung->lehrveranstaltung_id_kompatibel = $lv_komp->lehrveranstaltung_id;
$anrechnung->prestudent_id = $prestudent_id;
$anrechnung->begruendung_id = "2";
$anrechnung->genehmigt_von = CIS_PRUEFUNGSANMELDUNG_USER;
$anrechnung->new = true;
if($anrechnung->save())
$anrechungSaveResult = false;
if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true)
{
$anrechnung->lehrveranstaltung_id = $lehrveranstaltung->lehrveranstaltung_id;
$anrechnung->lehrveranstaltung_id_kompatibel = $lv_komp->lehrveranstaltung_id;
$anrechnung->prestudent_id = $prestudent_id;
$anrechnung->begruendung_id = "2";
$anrechnung->genehmigt_von = CIS_PRUEFUNGSANMELDUNG_USER;
$anrechnung->new = true;
$anrechungSaveResult = $anrechnung->save();
}
else
{
$anrechungSaveResult = true;
}
if($anrechungSaveResult)
{
$anmeldung->anrechnung_id = $anrechnung->anrechnung_id;
if($anmeldung->save(true))
{
$pruefung = new pruefungCis($termin->pruefung_id);
if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== ""))
$to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN;
else
$to = $pruefung->mitarbeiter_uid."@".DOMAIN;
$from = "noreply@".DOMAIN;
$subject = "Anmeldung zur Prüfung";
$mail = new mail($to, $from, $subject, "Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.");
if($anrechnung->anrechnung_id == "")
$anmeldung->anrechnung_id = null;
else
$anmeldung->anrechnung_id = $anrechnung->anrechnung_id;
if($anmeldung->save(true))
{
$pruefung = new pruefungCis($termin->pruefung_id);
if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== ""))
$to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN;
else
$to = $pruefung->mitarbeiter_uid."@".DOMAIN;
$from = "noreply@".DOMAIN;
$subject = "Anmeldung zur Prüfung";
$mail = new mail($to, $from, $subject, "Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.");
$student = new student($uid);
$datum = new datum();
$student = new student($uid);
$datum = new datum();
$lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id);
$lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id);
$html = "StudentIn ".$student->vorname." ".$student->nachname." hat sich zur Prüfung ".$lv->bezeichnung." am ".$datum->formatDatum($termin->von, "m.d.Y")." von ".$datum->formatDatum($termin->von,"h:i")." Uhr bis ".$datum->formatDatum($termin->bis,"h:i")." Uhr angemeldet.";
$mail->setHTMLContent($html);
$mail->send();
$html = "StudentIn ".$student->vorname." ".$student->nachname." hat sich zur Prüfung ".$lv->bezeichnung." am ".$datum->formatDatum($termin->von, "m.d.Y")." von ".$datum->formatDatum($termin->von,"h:i")." Uhr bis ".$datum->formatDatum($termin->bis,"h:i")." Uhr angemeldet.";
$mail->setHTMLContent($html);
$mail->send();
$data['result'] = "Anmeldung erfolgreich!";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$anmeldung->errormsg;
}
$data['result'] = "Anmeldung erfolgreich!";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$anmeldung->errormsg;
}
}
else
{
@@ -285,12 +285,14 @@ $studiensemester->getAll();
<span type="text" id="terminBis" disabled="true"></span>
</td>
</tr>
<tr>
<?php if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true): ?>
<tr>
<td style="vertical-align: top; font-weight: bold;">Studienverpflichtung:* </td>
<td>
<select id="studienverpflichtung"></select>
</td>
</tr>
<?php endif; ?>
<tr>
<td style="vertical-align: top; font-weight: bold;">Bemerkung: </td>
<td>
+4 -1
View File
@@ -228,7 +228,9 @@ if($uid!='')
echo "<a href='".$_SERVER['PHP_SELF']."?year=$year' class='Item'>Alle Mitarbeiter anzeigen</a><br></td>";
echo '<td style="width:33%">';
echo '</td><td style="width:33%">';
//echo '<div id="resturlaub"></div>';
//echo '</td></tr></table>';
//Anzeige Resturlaubsberechnung
$resturlaub = new resturlaub();
@@ -305,6 +307,7 @@ if($uid!='')
echo '</div>';
echo '</td></tr></table>';
}
echo '<br><center>';
+23 -4
View File
@@ -40,6 +40,7 @@ require_once('../../../include/betriebsmittelperson.class.php');
require_once('../../../include/globals.inc.php');
require_once('../../../include/bisverwendung.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
$sprache = getSprache();
$p=new phrasen($sprache);
@@ -48,10 +49,22 @@ if (!$db = new basis_db())
die($p->t("global/fehlerBeimOeffnenDerDatenbankverbindung"));
$user = get_uid();
if ($user == 'raab' && isset($_GET["debuguser"]))
$user = $_GET["debuguser"];
//Wenn User Administrator ist und UID uebergeben wurde, dann die Zeiaufzeichnung
//des uebergebenen Users anzeigen
if(isset($_GET['uid']))
{
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid'))
{
$user = $_GET['uid'];
}
else
{
die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte'));
}
}
$datum = new datum();
@@ -882,7 +895,13 @@ if($projekt->getProjekteMitarbeiter($user, true))
$l_arr = $lehre->getLehreForUser($user, $sem_akt);
if ($l_arr["LehreAuftraege"]>0 || $l_arr["LehreIntern"] > 0 || $l_arr["LehreExtern"] > 0)
{
$l_extern_soll = $l_arr["LehreAuftraege"]-$lehre_inkludiert;
if ($lehre_inkludiert == -1)
{
$l_extern_soll = 0;
$lehre_inkludiert = $l_arr["LehreAuftraege"];
}
else
$l_extern_soll = $l_arr["LehreAuftraege"]-$lehre_inkludiert;
$l_extern_soll_norm = $l_extern_soll/4*3;
$lehre_inkludiert_norm = $lehre_inkludiert/4*3;
echo '<table style="border: 1px solid gray">';
+146 -17
View File
@@ -15,7 +15,7 @@
* 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>,
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>
@@ -28,11 +28,11 @@ require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/gebiet.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiengang.class.php');
if (!$user=get_uid())
die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! <a href="javascript:history.back()">Zur&uuml;ck</a>');
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
@@ -42,18 +42,41 @@ echo '
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link href="../../../skin/tablesort.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../../include/js/jquery1.9.min.js" ></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"]
});
});
function deleteZuordnung(ablauf_id)
{
if(confirm("Wollen Sie dieses Zuordnung wirklich entfernen?"))
{
$("#data").html(\'<form action="edit_gebiet.php" name="sendform" id="sendform" method="POST"><input type="hidden" name="action" value="deleteZuordnung" /><input type="hidden" name="ablauf_id" value="\'+ablauf_id+\'" /></form>\');
document.sendform.submit();
}
return false;
}
</script>
</head>
<body>
<div id="data"></div>
';
if(isset($_GET['gebiet_id']))
$gebiet_id=$_GET['gebiet_id'];
else
else
$gebiet_id='';
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
echo '<h1>&nbsp;Gebiet bearbeiten</h1>';
if(!$rechte->isBerechtigt('basis/testtool'))
@@ -72,13 +95,13 @@ foreach ($gebiet->result as $row)
{
if($gebiet_id=='')
$gebiet_id=$row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
$selected='selected';
else
else
$selected='';
echo '<OPTION value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</OPTION>';
echo '<OPTION value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</OPTION>';
}
echo '</SELECT>
<!--<input type="submit" value="Bearbeiten">-->
@@ -86,12 +109,53 @@ echo '</SELECT>
echo '<br /><br />';
// Ablaufzuordnung entfernen
if(isset($_POST['action']) && $_POST['action']=='deleteZuordnung')
{
if(!isset($_POST['ablauf_id']) || !is_numeric($_POST['ablauf_id']))
die('ungueltige Parameteruebergabe');
$ablauf_id = $_POST['ablauf_id'];
$ablauf = new gebiet();
if($ablauf->deleteAblaufZuordnung($ablauf_id))
echo '<span class="ok">Ablauf wurde entfernt</span>';
else
echo '<span class="error">Fehler beim Entfernen:'.$ablauf->errormsg.'</span>';
}
// Ablaufzuordnung hinzufügen
if(isset($_POST['action']) && $_POST['action']=='saveAblauf')
{
$ablauf_vorgaben_id = $_POST['ablauf_vorgaben_id'];
$studiengang_kz = $_POST['studiengang_kz'];
$reihung = $_POST['reihung'];
$gewicht = $_POST['gewicht'];
$semester = $_POST['semester'];
$ablauf = new gebiet();
$ablauf->ablauf_vorgaben_id = $ablauf_vorgaben_id;
$ablauf->studiengang_kz = $studiengang_kz;
$ablauf->reihung = $reihung;
$ablauf->gewicht = $gewicht;
$ablauf->semester = $semester;
$ablauf->new = true;
$ablauf->gebiet_id = $gebiet_id;
if($ablauf->saveAblauf())
echo '<span class="ok">Ablauf gespeichert</span>';
else
echo '<span class="error">Fehler beim Speichern:'.$ablauf->errormsg.'</span>';
}
//Speichern der Daten
if(isset($_POST['speichern']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$gebiet = new gebiet();
if($gebiet->load($gebiet_id))
{
@@ -112,17 +176,17 @@ if(isset($_POST['speichern']))
$gebiet->updateamum = date('Y-m-d H:i:s');
$gebiet->updatevon = $user;
$gebiet->antwortenprozeile = $_POST['antwortenprozeile'];
if($gebiet->save(false))
{
echo 'Daten erfolgreich gespeichert';
}
else
else
{
echo '<span class="error">Fehler beim Speichern: '.$gebiet->errormsg.'</span>';
}
}
else
else
{
echo '<span class="error">Fehler beim Laden des Gebiets</span>';
}
@@ -135,7 +199,7 @@ if($gebiet_id!='')
echo "<hr />";
echo '<form accept-charset="UTF-8" action="'.$_SERVER['PHP_SELF'].'?gebiet_id='.$gebiet_id.'&amp;stg_kz='.$stg_kz.'" method="POST">';
echo '<table>';
echo '<tr>';
//ID
echo '<td>ID</td><td>'.$gebiet_id.'</td>';
@@ -166,7 +230,7 @@ if($gebiet_id!='')
$maximalpunkte = $gebiet->berechneMaximalpunkte($gebiet_id);
if($gebiet->maxpunkte!=$maximalpunkte)
$hinweis = '<span class="error">empfohlene Maximalpunkteanzahl: '.$maximalpunkte.'</span>';
else
else
$hinweis ='';
echo '<td>Maximale Punkteanzahl</td><td><input type="text" size="5" maxlength="5" name="maxpunkte" value="'.$gebiet->maxpunkte.'">'.$hinweis.'</td>';
echo '</tr><tr>';
@@ -182,9 +246,74 @@ if($gebiet_id!='')
echo '</tr><tr>';
echo '<td></td><td><input type="submit" name="speichern" value="Speichern"></td>';
echo '</tr></table>';
echo '</form>';
echo '<hr />
<h2>Zuordnung</h2>';
$gebiet = new gebiet();
$gebiet->loadAblaufGebiet($gebiet_id);
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz',false);
echo '<form action="edit_gebiet.php" method="POST">';
echo '<table id="t1" class="tablesorter">
<thead>
<tr>
<th>Studiengang</th>
<th>Reihung</th>
<th>Gewicht</th>
<th>Semester</th>
<th>Vorgaben</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>';
foreach($gebiet->result as $row)
{
echo '<tr>
<td>'.$studiengang->kuerzel_arr[$row->studiengang_kz].'</td>
<td>'.$row->reihung.'</td>
<td>'.$row->gewicht.'</td>
<td>'.$row->semester.'</td>
<td>'.$row->ablauf_vorgaben_id.'</td>
<td><a href="#loeschen" onclick="return deleteZuordnung(\''.$row->ablauf_id.'\');" ><img src="../../../skin/images/delete.png" height="15px" /></a></td>
</tr>';
}
echo '</tbody>';
echo '<tfoot>
<tr>
<td><select name="studiengang_kz">';
foreach($studiengang->kuerzel_arr as $stg_kz=>$row_stg)
{
echo '<option value="'.$stg_kz.'">'.$row_stg.'</option>';
}
echo '</select>
</td>
<td><input type="text" name="reihung" value="1" size="2" /></td>
<td><input type="text" name="gewicht" value="1" size="2"/></td>
<td><input type="text" name="semester" value="1" size="2"/></td>
<td>
<select name="ablauf_vorgaben_id">';
$ablauf_vorgabe = new gebiet();
$ablauf_vorgabe->getAblaufVorgaben();
foreach($ablauf_vorgabe->result as $vorgabe)
{
echo '<option value="'.$vorgabe->ablauf_vorgaben_id.'">'.$studiengang->kuerzel_arr[$vorgabe->studiengang_kz].' - Sprache: '.$vorgabe->sprache.' Sprachwahl: '.($vorgabe->sprachwahl?'Ja':'Nein').' Content:'.$vorgabe->content_id.'</option>';
}
echo '</select></td>
<td>
<input type="hidden" name="action" value="saveAblauf" />
<input type="submit" value="speichern" /></td>
</tr>';
echo '</tfoot></table>';
echo '</form>';
}
echo '</body></html>';
?>
?>
+83 -62
View File
@@ -31,7 +31,7 @@ require_once('../../../include/frage.class.php');
require_once('../../../include/vorschlag.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiengang.class.php');
if (!$db = new basis_db())
{
die('Fehler beim Oeffnen der Datenbankverbindung');
@@ -52,7 +52,7 @@ if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', false);
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
if(isset($_GET['gebiet_id']))
{
$gebiet_id = $_GET['gebiet_id'];
@@ -112,7 +112,7 @@ function previewvorschlag()
{
document.getElementById('vorschauvorschlag').innerHTML = document.getElementById('text_vorschlag').value;
}
function insertfrage(aTag, eTag)
function insertfrage(aTag, eTag)
{
var input = document.forms['formular_frage'].elements['text'];
input.focus();
@@ -131,7 +131,7 @@ function insertfrage(aTag, eTag)
input.selectionStart = pos;
input.selectionEnd = pos;
}
function insertvorschlag(aTag, eTag)
function insertvorschlag(aTag, eTag)
{
var input = document.forms['formular_vorschlag'].elements['text_vorschlag'];
input.focus();
@@ -150,6 +150,11 @@ function insertvorschlag(aTag, eTag)
input.selectionStart = pos;
input.selectionEnd = pos;
}
function confirmDeleteFrage()
{
return confirm('Wollen Sie diese Frage wirklich löschen?');
}
</script>
<style type="text/css">
@@ -164,7 +169,7 @@ font-size: 10pt;
<h1>
<div style="float:left">Testtool - Administrationsseite</div>
<div style="text-align:right; padding-right: 5px;"><a href="uebersichtFragen.php" class="Item" target="blank">Fragenübersicht</a> | <a href="auswertung.php" class="Item">Auswertung</a> | <a href="Testtool.pdf" class="Item" target="_blank">Hilfe</a></div>
<div style="text-align:right; padding-right: 5px;"><a href="uebersichtGebiete.php" class="Item" target="blank">Gebietübersicht</a> |<a href="uebersichtFragen.php" class="Item" target="blank">Fragenübersicht</a> | <a href="auswertung.php" class="Item">Auswertung</a> | <a href="Testtool.pdf" class="Item" target="_blank">Hilfe</a></div>
</h1>
<?php
@@ -176,7 +181,7 @@ if(isset($_GET['type']) && $_GET['type']=='changesprache')
if(!isset($_SESSION['sprache']))
$_SESSION['sprache']=DEFAULT_LANGUAGE;
$sprache = $_SESSION['sprache'];
//Bei Upload des Bildes
@@ -270,7 +275,7 @@ if(isset($_POST['submitdata']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$frage = new frage();
if($frage->load($_GET['frage_id']))
{
@@ -278,14 +283,14 @@ if(isset($_POST['submitdata']))
$frage->nummer = $_POST['nummer'];
$frage->level = $_POST['level'];
$frage->new = false;
if($frage->save())
{
if(!$frage->getFrageSprache($frage->frage_id, $sprache))
{
$frage->new=true;
}
$frage->text = $_POST['text'];
$frage->sprache = $sprache;
@@ -298,14 +303,14 @@ if(isset($_POST['submitdata']))
echo "<b>Daten gespeichert</b><br />";
$nummer = $frage->nummer;
}
else
else
echo '<b>Fehler:'.$frage->errormsg.'</b><br />';
}
else
else
{
$frage_error_text = $frage->text;
echo '<b>Fehler: Text ist kein gueltiges XML:<span class="error"><br />';
foreach (libxml_get_errors() as $error)
foreach (libxml_get_errors() as $error)
{
echo $error->message.'<br />';
}
@@ -324,7 +329,7 @@ if(isset($_POST['submitvorschlag']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$bildcontent='';
if(isset($_FILES['bild']['tmp_name']) && is_uploaded_file($_FILES['bild']['tmp_name']))
{
@@ -347,7 +352,7 @@ if(isset($_POST['submitvorschlag']))
else
echo "<b>Datei ist kein Bild!</b><br />";
}
$audiocontent='';
if(isset($_FILES['audio']['tmp_name']) && is_uploaded_file($_FILES['audio']['tmp_name']))
{
@@ -409,18 +414,18 @@ if(isset($_POST['submitvorschlag']))
$vorschlag->sprache = $sprache;
$vorschlag->updateamum = date('Y-m-d H:i:s');
$vorschlag->updatevon = $user;
$xml = '<?xml version="1.0" encoding="utf-8"?><root>'.$vorschlag->text.'</root>';
libxml_use_internal_errors(true);
if(simplexml_load_string($xml))
{
{
if($vorschlag->save())
{
if($vorschlag->save_vorschlagsprache())
{
echo "<b>Vorschlag gespeichert</b><br />";
}
else
else
{
$save_vorschlag_error=true;
echo "Fehler beim Speichern von Vorschlagsprache: $vorschlag->errormsg<br />";
@@ -432,11 +437,11 @@ if(isset($_POST['submitvorschlag']))
echo '<b>'.$vorschlag->errormsg.'</b><br />';
}
}
else
else
{
$vorschlag_error_text = $vorschlag->text;
echo '<b>Fehler: Text ist kein gueltiges XML:<span class="error"><br />';
foreach (libxml_get_errors() as $error)
foreach (libxml_get_errors() as $error)
{
echo $error->message.'<br />';
}
@@ -451,21 +456,33 @@ if(isset($_GET['type']) && $_GET['type']=='delete' && isset($_GET['vorschlag_id'
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$vs = new vorschlag();
if(!$vs->delete($_GET['vorschlag_id']))
echo '<b>'.$vs->errormsg.'</b><br />';
$vorschlag_id='';
}
if(isset($_POST['type']) && $_POST['type']=='deleteFrage')
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$frage = new frage();
if(!$frage->delete($_GET['frage_id']))
{
echo "Löschen fehlgeschlagen:".$frage->errormsg;
}
}
// anlegen einer neuen Frage
if(isset($_GET['type']) && $_GET['type']=='neuefrage')
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
$frage_obj = new frage();
$frage_obj->gebiet_id = $_GET['gebiet_id'];
$frage_obj->nummer=999;
$frage_obj->demo=false;
@@ -480,12 +497,12 @@ if(isset($_GET['type']) && $_GET['type']=='neuefrage')
echo 'Frage wurde erfolgreich angelegt';
$nummer=999;
}
else
else
{
echo '<span class="error">Fehler beim Speichern der FrageSprache: '.$frage_obj->errormsg.'</span>';
}
}
else
else
{
echo '<span class="error">Fehler beim Speichern der Frage: '.$frage_obj->errormsg.'</span>';
}
@@ -495,18 +512,18 @@ if(isset($_GET['type']) && $_GET['type']=='neuefrage')
if(isset($_GET['type']) && $_GET['type']=='gebietpruefen' && isset($_GET['gebiet_id']))
{
$gebiet = new gebiet($gebiet_id);
if($gebiet->check_gebiet($gebiet_id))
{
echo "<b>Das Gebiet $gebiet->bezeichnung wurde erfolgreich ueberprueft</b>";
}
else
else
{
echo "<b>Bei der Ueberpruefung des Gebiets '$gebiet->bezeichnung' sind folgende Fehler aufgetreten:<br /></b>";
echo nl2br($gebiet->errormsg);
echo '<br /><br />';
}
$maxpunkte = $gebiet->berechneMaximalpunkte($gebiet_id);
if($gebiet->maxpunkte!=$maxpunkte)
{
@@ -519,63 +536,63 @@ echo '<table width="100%"><tr><td>';
//Liste der Studiengänge
echo 'Studiengang: <select onchange="window.location.href=this.value">';
echo '<option value="'.$PHP_SELF.'?" >Alle Studiengänge</option>';
foreach ($studiengang->result as $row)
foreach ($studiengang->result as $row)
{
$stg_arr[$row->studiengang_kz] = $row->kuerzel;
if($stg_kz=='')
$stg_kz=$row->studiengang_kz;
if($row->studiengang_kz==$stg_kz)
$selected='selected="selected"';
else
else
$selected='';
echo '<option value="'.$PHP_SELF.'?stg_kz='.$row->studiengang_kz.'" '.$selected.'>'.$db->convert_html_chars($row->kuerzel).'</option>'."\n";
}
echo '</select>';
//Liste der Gebiete
$qry= "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$stg_kz."";
$qry= "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$stg_kz."";
$anzahl = $db->db_num_rows($db->db_query($qry));
if ($stg_kz!=="-1" && $anzahl!==0)
$qry= "SELECT * FROM testtool.tbl_gebiet LEFT JOIN testtool.tbl_ablauf USING (gebiet_id) WHERE studiengang_kz=".$stg_kz." ORDER BY semester,reihung";
else
else
$qry= "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung";
if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
{
if($result = $db->db_query($qry))
{
echo ' Gebiet:<select onchange="window.location.href=\''.$PHP_SELF.'?stg_kz='.$stg_kz.'&amp;gebiet_id=\'+this.value;">';
//echo 'Gebiet: <select onchange="window.location.href=this.value">';
while($row = $db->db_fetch_object($result))
{
if($gebiet_id=='')
$gebiet_id = $row->gebiet_id;
if($gebiet_id==$row->gebiet_id)
$selected='selected="selected"';
else
else
$selected='';
if ($stg_kz=="-1")
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</option>'."\n";
else
else
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>('.$row->semester.') - '.$row->bezeichnung.' - '.$row->kurzbz.' - '.$row->zeit.'</option>'."\n";
}
echo '</select>';
}
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$nummer&amp;type=gebietpruefen' class='Item'>Pruefen</a> | ";
echo " <a href='edit_gebiet.php?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz' class='Item'>Bearbeiten</a>";
//echo " <br/>Gebiet_id=".$gebiet_id."";
echo '</td><td align="right">';
//Liste der Sprachen
$qry = "SELECT sprache FROM public.tbl_sprache WHERE content ORDER BY sprache DESC";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
@@ -584,17 +601,17 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
$sprache = $row->sprache;
if($sprache==$row->sprache)
$selected='style="border:1px solid black;"';
else
else
$selected='';
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;nummer=$nummer&amp;stg_kz=$stg_kz&amp;type=changesprache&amp;sprache=$row->sprache' class='Item' $selected><img src='../bild.php?src=flag&amp;sprache=$row->sprache' alt='$row->sprache' title='$row->sprache'/></a>";
}
}
echo '</td></tr></table>';
echo '<br />';
// Liste der Fragen
$qry = "SELECT distinct nummer FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." ORDER BY nummer";
if($result = $db->db_query($qry))
{
echo 'Nummer: ';
@@ -602,7 +619,7 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
{
if($nummer=='')
$nummer = $row->nummer;
if($nummer==$row->nummer)
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$row->nummer' class='Item'><u>$row->nummer</u></a> -";
else
@@ -612,30 +629,30 @@ if (($anzahl!==0) || ($stg_kz=='-1') && ($stg_kz!==''))
if($nummer<$db->db_num_rows($result)-1)
echo " - <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=".($nummer+1)."' class='Item'>Weiter &gt;&gt;</a>";
}
echo "\n\n<br />";
//Fragen holen
$frage = new frage();
$frage->getFragen($gebiet_id, $nummer);
if(count($frage->result)==1)
{
$frage_id = $frage->result[0]->frage_id;
}
else
else
{
//Wenn fuer diese Nummer mehrere Fragen vorhanden sind,
//koennen diese extra ausgewaehlt werden
echo 'FrageID: ';
foreach ($frage->result as $row)
foreach ($frage->result as $row)
{
if($frage_id=='')
$frage_id=$row->frage_id;
if($frage_id==$row->frage_id)
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$row->nummer&amp;frage_id=$row->frage_id' class='Item'><u>$row->frage_id</u></a> -";
else
else
echo "<a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$row->nummer&amp;frage_id=$row->frage_id' class='Item'>$row->frage_id</a> -";
}
}
@@ -650,9 +667,13 @@ if($frage_id!='')
{
$frage->load($frage_id);
$frage->getFrageSprache($frage_id, $sprache);
echo "<table><tr><td>";
echo '<table><tr><td valign="top" align="right">';
echo '<form action="'.$PHP_SELF.'?gebiet_id='.$gebiet_id.'&amp;stg_kz='.$stg_kz.'&amp;nummer='.$nummer.'&amp;frage_id='.$frage->frage_id.'" method="POST" onsubmit="return confirmDeleteFrage()">
<input type="hidden" name="type" value="deleteFrage" />
<input type="submit" value="Frage löschen" />
</form>';
//Fragen
echo "<table>";
echo "<tr>";
@@ -696,7 +717,7 @@ if($frage_id!='')
echo "<table>";
//Bei Aenderungen im Textfeld werden diese sofort in der Vorschau angezeigt
//Wenn beim Speichern der Text kein Gueltiges XML ist, wird der vorige Text erneut angezeigt
echo "<tr valign='top'><td colspan='2'>\n<textarea name='text' id='text' cols='50' rows='27' oninput='preview()'><![CDATA[".(isset($frage_error_text)?$frage_error_text:$frage->text)."]]></textarea>\n</td>";
echo "<table><tr><td><input type='button' value='br' onclick='insertfrage(\"&lt;br/&gt;\", \"\")' />";
echo "<input type='button' value='F' style='font-weight:bold' onclick='insertfrage(\"&lt;strong&gt;\", \"&lt;/strong&gt;\")' />";
@@ -790,7 +811,7 @@ if($frage_id!='')
echo '<tr>';
//Upload Feld fuer Audio
echo "<td>Audio:</td><td><input type='file' name='audio' /></td></tr>";
echo "<tr><td colspan='2' align='right'><input type='submit' name='submitvorschlag' value='Speichern' />".($vorschlag_id!=''?"<input type='button' value='Abbrechen' onclick=\"document.location.href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$nummer&amp;frage_id=$frage->frage_id'\" />":'')."</td></tr>";
//Vorschau fuer das Text-Feld
echo "<tr><td colspan='2'>Vorschau:<br /><div id='vorschauvorschlag' style='border: 1px solid black' align='center'>$vorschlag->text</div></td></tr>";
@@ -818,7 +839,7 @@ if($frage_id!='')
else
echo "<td align='right' style='color:#FF8204'>$vs->punkte";
echo "</td><td>$vs->text</td>
<td>".($vs->bild!=''?"<img src='../bild.php?src=vorschlag&amp;vorschlag_id=$vs->vorschlag_id&amp;sprache=$sprache' height='24' onmouseover='height=200' onmouseout='height=24'/>":"")."</td>
<td>".($vs->bild!=''?"<img src='../bild.php?src=vorschlag&amp;vorschlag_id=$vs->vorschlag_id&amp;sprache=$sprache' height='24' onmouseover='height=200' onmouseout='height=24'/>":"")."</td>
<td>";
$a[] = $vs->punkte;
if($vs->audio!='')
@@ -833,9 +854,9 @@ if($frage_id!='')
<td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$nummer&amp;frage_id=$frage->frage_id&amp;vorschlag_id=$vs->vorschlag_id'>edit</a></td>
<td><a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;stg_kz=$stg_kz&amp;nummer=$nummer&amp;frage_id=$frage->frage_id&amp;vorschlag_id=$vs->vorschlag_id&amp;type=delete' onclick=\"return confirm('Wollen Sie diesen Eintrag wirklich loeschen?')\">delete</a></td>
</tr>";
}
echo '<tr><td>Summe:</td><td align="left">'.number_format(array_sum($a),2, ".", "").'&nbsp;&nbsp;</td></tr>';
echo '</table><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>';
}
+132
View File
@@ -0,0 +1,132 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once("../../../config/cis.config.inc.php");
require_once('../../../include/basis_db.class.php');
require_once("../../../include/gebiet.class.php");
require_once('../../../include/functions.inc.php');
require_once("../../../include/benutzerberechtigung.class.php");
require_once("../../../include/studiengang.class.php");
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link href="../../../skin/tablesort.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../../include/js/jquery1.9.min.js"></script>
<script type="text/javascript">
function deleteGebiet(id)
{
if(confirm("Wollen Sie dieses Gebiet wirklich löschen?"))
{
$("#data").html('<form action="uebersichtGebiete.php" name="sendform" id="sendform" method="POST"><input type="hidden" name="action" value="deleteGebiet" /><input type="hidden" name="id" value="'+id+'" /></form>');
document.sendform.submit();
}
return false;
}
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[3,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>
<h1>Gebiete Übersicht</h1>
<div id="data"></div>
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
if(isset($_POST['action']) && $_POST['action']=='deleteGebiet')
{
if(!isset($_POST['id']) || !is_numeric($_POST['id']))
die('Falsche Parameteruebergabe');
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
die('<span class="error">Sie haben keine Berechtigung für diesen Vorgang</span>');
$id = $_POST['id'];
$gebiet = new gebiet();
if(!$gebiet->delete($id))
echo '<span class="error">'.$gebiet->errormsg.'</span>';
}
$gebiet = new gebiet();
$gebiet->getAll();
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz',false);
echo '<table id="t1" class="tablesorter">
<thead>
<tr>
<th>Action</th>
<th>ID</th>
<th>Kurzbz</th>
<th>Bezeichnung</th>
<th>Beschreibung</th>
<th>Zeit</th>
<th>Multipleresonse</th>
<th>Levelgleichverteilung</th>
<th>Ablauf</th>
</tr>
</thead>
<tbody>';
foreach($gebiet->result as $row_gebiet)
{
$ablauf = new gebiet();
$ablauf->loadAblaufGebiet($row_gebiet->gebiet_id);
echo '<tr>
<td>
<a href="edit_gebiet.php?gebiet_id='.$row_gebiet->gebiet_id.'"><img src="../../../skin/images/edit.png" title="Edit" height="15px"/></a>
<a href="#Delete" onclick="return deleteGebiet(\''.$row_gebiet->gebiet_id.'\');"><img src="../../../skin/images/delete.png" title="Delete" height="15px"/></a></td>
<td>'.$row_gebiet->gebiet_id.'</td>
<td>'.$row_gebiet->kurzbz.'</td>
<td>'.$row_gebiet->bezeichnung.'</td>
<td>'.$row_gebiet->beschreibung.'</td>
<td>'.$row_gebiet->zeit.'</td>
<td>'.($row_gebiet->multipleresponse?'Ja':'Nein').'</td>
<td>'.($row_gebiet->levelgleichverteilung?'Ja':'Nein').'</td>
<td>';
foreach($ablauf->result as $row_ablauf)
{
echo $studiengang->kuerzel_arr[$row_ablauf->studiengang_kz].'('.$row_ablauf->semester.') ';
}
echo '</td>
</tr>';
}
echo '</table>';
?>
</body>
+2 -1
View File
@@ -2,7 +2,8 @@
"require": {
"components/jquery": "2.1.4",
"components/angular.js": "1.3.16",
"components/bootstrap": "3.3.5"
"components/bootstrap": "3.3.5",
"michelf/php-markdown": "1.5.0"
},
Generated
+53 -2
View File
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "6f613635b131d66244b30d0ee702a36b",
"content-hash": "60c05e7e5b04118d51a1bc59c4877b8d",
"hash": "ef5178581ef212d2de46334bd149f469",
"content-hash": "6574a5f8f5995f3db237091bf4b70270",
"packages": [
{
"name": "components/angular.js",
@@ -420,6 +420,57 @@
"description": "jQuery JavaScript Library",
"homepage": "http://jquery.com",
"time": "2015-05-08 05:04:47"
},
{
"name": "michelf/php-markdown",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/e1aabe18173231ebcefc90e615565742fc1c7fd9",
"reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
}
},
"autoload": {
"psr-0": {
"Michelf": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "John Gruber",
"homepage": "http://daringfireball.net/"
},
{
"name": "Michel Fortin",
"email": "michel.fortin@michelf.ca",
"homepage": "https://michelf.ca/",
"role": "Developer"
}
],
"description": "PHP Markdown",
"homepage": "https://michelf.ca/projects/php-markdown/",
"keywords": [
"markdown"
],
"time": "2015-03-01 12:03:08"
}
],
"packages-dev": [],
+3
View File
@@ -212,6 +212,9 @@ define('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN',true);
//User, welcher für das Anlegen von Anrechnungen bei der Prüfungsanmeldung verwendet wird
define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung');
// Soll für die Prüfungsanmeldungen eine Anrechnung erstellt werden
define('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG', true);
//Gibt an, wie viele Semester aus der Vergangenheit unter Meine LV angezeigt werden
define('CIS_MEINELV_ANZAHL_SEMESTER_PAST', 3);
-3
View File
@@ -199,7 +199,4 @@ define('KOLLISIONSFREIE_USER',serialize(array('_DummyLektor')));
// Soll der Lageplan am Infoterminal angezeigt werden (true|false)
define('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN', true);
//PHANTOM
define('PHANTOM_SERVER','http://phantomjs.example.com:3003');
?>
+16 -16
View File
@@ -40,7 +40,7 @@ if(!$variable->loadVariables($user))
//$benutzer = new benutzer($conn);
//if(!$benutzer->loadVariables($user))
// $error_msg = $benutzer->errormsg;
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
@@ -60,7 +60,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
<window
id="fas"
title="&window.title; - Version &window.version;"
title="&window.title; - &window.version;"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
@@ -110,8 +110,8 @@ foreach($addon_obj->result as $addon)
<command id="menu-statistic-substatistik-studentenprosemester-excel:command" oncommand="StatistikPrintStudentenProSemester('xls');"/>
<command id="menu-statistic-substatistik-studentenprosemester-html:command" oncommand="StatistikPrintStudentenProSemester('');"/>
<command id="menu-statistic-substatistik-alvsstatistik-excel:command" oncommand="StatistikPrintALVSStatistik('xls');"/>
<command id="menu-statistic-substatistik-alvsstatistik-html:command" oncommand="StatistikPrintALVSStatistik('');"/>
<command id="menu-statistic-substatistik-lvplanunggesamtsj-excel:command" oncommand="StatistikPrintLvPlanungGesamtSJ();"/>
<command id="menu-statistic-substatistik-alvsstatistik-html:command" oncommand="StatistikPrintALVSStatistik('');"/>
<command id="menu-statistic-substatistik-lvplanunggesamtsj-excel:command" oncommand="StatistikPrintLvPlanungGesamtSJ();"/>
<command id="menu-statistic-absolventenstatistik:command" oncommand="StatistikPrintAbsolventenstatistik();"/>
<command id="menu-statistic-absolventenzahlen:command" oncommand="StatistikPrintAbsolventenZahlen();"/>
<command id="menu-statistic-studentenstatistik:command" oncommand="StatistikPrintStudentenstatistik();"/>
@@ -133,7 +133,7 @@ foreach($addon_obj->result as $addon)
<command id="menu-dokumente-studienerfolgeng-finanzamt:command" oncommand="StudentCreateStudienerfolg(event, 'StudienerfolgEng','finanzamt');"/>
<command id="menu-dokumente-studienerfolgeng-allesemester-normal:command" oncommand="StudentCreateStudienerfolg(event, 'StudienerfolgEng','', '', 'true');"/>
<command id="menu-dokumente-studienerfolgeng-allesemester-finanzamt:command" oncommand="StudentCreateStudienerfolg(event, 'StudienerfolgEng','finanzamt', '', 'true');"/>
<command id="menu-dokumente-accountinfoblatt:command" oncommand="PrintAccountInfoBlatt(event);"/>
<command id="menu-dokumente-accountinfoblatt:command" oncommand="PrintAccountInfoBlatt(event);"/>
<command id="menu-dokumente-zutrittskarte:command" oncommand="PrintZutrittskarte();"/>
<command id="menu-dokumente-studienblatt:command" oncommand="PrintStudienblatt(event);"/>
<command id="menu-dokumente-studienblatt_englisch:command" oncommand="PrintStudienblattEnglisch(event);"/>
@@ -529,16 +529,16 @@ foreach($addon_obj->result as $addon)
</menupopup>
</menu>
<?php
$qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE ende<now() ORDER BY ende DESC LIMIT 5";
$db = new basis_db();
if($db->db_query($qry))
{
while($row = $db->db_fetch_object())
{
$stsem_kurzbz = $row->studiensemester_kurzbz;
echo '
<menu id="menu-dokumente-studienerfolg-menu" label="'.$stsem_kurzbz.'">
<menupopup id="menu-dokumente-studienerfolg-menu-popup">
@@ -546,13 +546,13 @@ foreach($addon_obj->result as $addon)
id = "menu-dokumente-studienerfolg-menu-normal"
key = "menu-dokumente-studienerfolg-normal:key"
label = "&menu-dokumente-studienerfolg-normal.label;"
oncommand = "StudentCreateStudienerfolg(\'Studienerfolg\',null, \''.$stsem_kurzbz.'\');"
oncommand = "StudentCreateStudienerfolg(event,\'Studienerfolg\',null, \''.$stsem_kurzbz.'\');"
accesskey = "&menu-dokumente-studienerfolg-normal.accesskey;"/>
<menuitem
id = "menu-dokumente-studienerfolg-finanzamt"
key = "menu-dokumente-studienerfolg-finanzamt:key"
label = "&menu-dokumente-studienerfolg-finanzamt.label;"
oncommand = "StudentCreateStudienerfolg(\'Studienerfolg\',\'finanzamt\', \''.$stsem_kurzbz.'\');"
oncommand = "StudentCreateStudienerfolg(event,\'Studienerfolg\',\'finanzamt\', \''.$stsem_kurzbz.'\');"
accesskey = "&menu-dokumente-studienerfolg-finanzamt.accesskey;"/>
</menupopup>
</menu>';
@@ -592,16 +592,16 @@ foreach($addon_obj->result as $addon)
</menupopup>
</menu>
<?php
$qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE ende<now() ORDER BY ende DESC LIMIT 5";
$db = new basis_db();
if($db->db_query($qry))
{
while($row = $db->db_fetch_object())
{
$stsem_kurzbz = $row->studiensemester_kurzbz;
echo '
<menu id="menu-dokumente-studienerfolg-menu" label="'.$stsem_kurzbz.'">
<menupopup id="menu-dokumente-studienerfolg-menu-popup">
@@ -609,13 +609,13 @@ foreach($addon_obj->result as $addon)
id = "menu-dokumente-studienerfolgeng-menu-normal"
key = "menu-dokumente-studienerfolgeng-normal:key"
label = "&menu-dokumente-studienerfolgeng-normal.label;"
oncommand = "StudentCreateStudienerfolg(\'StudienerfolgEng\',null, \''.$stsem_kurzbz.'\');"
oncommand = "StudentCreateStudienerfolg(event,\'StudienerfolgEng\',null, \''.$stsem_kurzbz.'\');"
accesskey = "&menu-dokumente-studienerfolgeng-normal.accesskey;"/>
<menuitem
id = "menu-dokumente-studienerfolgeng-finanzamt"
key = "menu-dokumente-studienerfolgeng-finanzamt:key"
label = "&menu-dokumente-studienerfolgeng-finanzamt.label;"
oncommand = "StudentCreateStudienerfolg(\'StudienerfolgEng\',\'finanzamt\', \''.$stsem_kurzbz.'\');"
oncommand = "StudentCreateStudienerfolg(event,\'StudienerfolgEng\',\'finanzamt\', \''.$stsem_kurzbz.'\');"
accesskey = "&menu-dokumente-studienerfolgeng-finanzamt.accesskey;"/>
</menupopup>
</menu>';
@@ -776,7 +776,7 @@ foreach($addon_obj->result as $addon)
key = "menu-extras-projektarbeitsabgaben:key"
label = "&menu-extras-projektarbeitsabgaben.label;"
command = "menu-extras-projektarbeitsabgaben:command"
accesskey = "&menu-extras-projektarbeitsabgaben.accesskey;"/>
accesskey = "&menu-extras-projektarbeitsabgaben.accesskey;"/>
<menuitem
id = "menu-extras-projektarbeitsbenotung"
key = "menu-extras-projektarbeitsbenotung:key"
+1 -1
View File
@@ -47,7 +47,7 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
<window
id="planner"
title="&window.title; &window.version;"
title="&window.title; - &window.version;"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
+1 -1
View File
@@ -47,7 +47,7 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
<window
id="tempus"
title="&window.title; &window.version;"
title="&window.title; - &window.version;"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
+26 -24
View File
@@ -23,7 +23,7 @@
* Klasse benutzerfunktion (FAS-Online)
* @create 04-12-2006
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/basis_db.class.php');
class benutzerfunktion extends basis_db
{
@@ -57,7 +57,7 @@ class benutzerfunktion extends basis_db
public function __construct($benutzerfunktion_id=null)
{
parent::__construct();
if($benutzerfunktion_id != null)
$this->load($benutzerfunktion_id);
}
@@ -106,7 +106,7 @@ class benutzerfunktion extends basis_db
*/
public function benutzerfunktion_exists($uid, $benutzerfunktion)
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzerfunktion
$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($benutzerfunktion);
if($row = $this->db_fetch_object($this->db_query($qry)))
@@ -131,8 +131,8 @@ class benutzerfunktion extends basis_db
*/
public function getBenutzerFunktion($uid, $funktion_kurzbz, $oe_kurzbz)
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($funktion_kurzbz)."
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($funktion_kurzbz)."
AND oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if($result = $this->db_query($qry))
@@ -168,7 +168,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
/**
* Laedt mehrere BenutzerFunktionen
* @param funktion_kurzbz, studiengang_kz, semester
@@ -177,7 +177,7 @@ class benutzerfunktion extends basis_db
*/
public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz='', $semester='', $uid='')
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE funktion_kurzbz=".$this->db_add_param($funktion_kurzbz)."
AND (datum_bis >= now() OR datum_bis IS NULL)
AND (datum_von <= now() OR datum_von IS NULL)";
@@ -188,7 +188,7 @@ class benutzerfunktion extends basis_db
$qry.=" AND semester=".$this->db_add_param($semester);
if($uid!='')
$qry.=" AND uid=".$this->db_add_param($uid);
$qry.=" ORDER BY funktion_kurzbz, oe_kurzbz, semester";
if($result = $this->db_query($qry))
@@ -196,7 +196,7 @@ class benutzerfunktion extends basis_db
while($row = $this->db_fetch_object($result))
{
$obj = new benutzerfunktion();
$obj->benutzerfunktion_id = $row->benutzerfunktion_id;
$obj->fachbereich_kurzbz = $row->fachbereich_kurzbz;
$obj->uid = $row->uid;
@@ -211,9 +211,9 @@ class benutzerfunktion extends basis_db
$obj->datum_bis = $row->datum_bis;
$obj->bezeichnung = $row->bezeichnung;
$obj->wochenstunden = $row->wochenstunden;
$this->result[] = $obj;
}
return true;
}
@@ -283,7 +283,7 @@ class benutzerfunktion extends basis_db
$this->errormsg='Benutzerfunktion_id muss eine gueltige Zahl sein';
return false;
}
$qry = "DELETE FROM public.tbl_benutzerfunktion WHERE benutzerfunktion_id=".$this->db_add_param($benutzerfunktion_id, FHC_INTEGER);
if(!$this->db_query($qry))
{
@@ -293,7 +293,7 @@ class benutzerfunktion extends basis_db
else
return true;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
@@ -379,13 +379,13 @@ class benutzerfunktion extends basis_db
$this->benutzerfunktion_id = $row->id;
$this->db_query('COMMIT;');
}
else
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
}
}
else
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
@@ -399,7 +399,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
/**
* Lädt alle Benutzerfunktionen zu einer UID
* @param type $uid UID des Mitarbeiters
@@ -410,7 +410,7 @@ class benutzerfunktion extends basis_db
*/
public function getBenutzerFunktionByUid($uid, $funktion_kurzbz=null, $startZeitraum=null, $endeZeitraum=null)
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid);
if(!is_null($funktion_kurzbz))
{
@@ -458,7 +458,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
/**
* Laedt alle Benutzerfunktionen in einer Organisationseinheit
* @param $oe_kurzbz
@@ -470,7 +470,7 @@ class benutzerfunktion extends basis_db
*/
public function getOeFunktionen($oe_kurzbz, $funktionen_kurzbz=null, $startZeitraum=null, $endeZeitraum=null)
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if(!is_null($funktionen_kurzbz))
@@ -486,15 +486,15 @@ class benutzerfunktion extends basis_db
{
$qry .=' AND (datum_von IS NULL OR datum_von <='.$this->db_add_param($endeZeitraum).')';
}
$qry.=" ORDER BY bezeichnung, uid";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new benutzerfunktion();
$obj->benutzerfunktion_id = $row->benutzerfunktion_id;
$obj->fachbereich_kurzbz = $row->fachbereich_kurzbz;
$obj->uid = $row->uid;
@@ -509,9 +509,9 @@ class benutzerfunktion extends basis_db
$obj->datum_bis = $row->datum_bis;
$obj->bezeichnung = $row->bezeichnung;
$obj->wochenstunden = $row->wochenstunden;
$this->result[] = $obj;
}
return true;
}
@@ -521,5 +521,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
}
?>
+6 -2
View File
@@ -313,7 +313,7 @@ class betriebsmittelperson extends basis_db
* @param $betriebsmitteltyp Typ auf den gefiltert werden soll
* @return true wenn ok, false wenn Fehler
*/
public function getBetriebsmittelPerson($person_id, $betriebsmitteltyp=null)
public function getBetriebsmittelPerson($person_id, $betriebsmitteltyp=null, $order=null)
{
$this->result=array();
$this->errormsg = '';
@@ -326,7 +326,11 @@ class betriebsmittelperson extends basis_db
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
if(!is_null($betriebsmitteltyp))
$qry.=" AND betriebsmitteltyp=".$this->db_add_param($betriebsmitteltyp);
$qry.=" ORDER BY betriebsmitteltyp, nummer";
if(!is_null($order))
$qry.=" ORDER BY ".$order;
else
$qry.=" ORDER BY betriebsmitteltyp, nummer";
if($this->db_query($qry))
{
+393
View File
@@ -0,0 +1,393 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
require_once(dirname(__FILE__).'/vorlage.class.php');
require_once(dirname(__FILE__).'/addon.class.php');
require_once(dirname(__FILE__).'/studiengang.class.php');
class dokument_export
{
private $content_xsl; // XSL Vorlage fuer content.xml
private $styles_xsl; // XSL Vorlage fuer styles.xml
private $xml_data; // XML Daten
private $vorlage; // Vorlage Objekt
private $vorlage_file; // Vorlage ODT/ODS in das hineingezippt wird
private $outputformat; // Datentyp des Ausgabefiles
private $filename; // Dateiname des Ausgabefiles
private $temp_filename;
private $temp_folder;
private $images=array();
/**
* Konstruktor
*/
public function __construct($vorlage, $oe_kurzbz=0, $version=null)
{
//Vorlage aus der Datenbank holen
$this->vorlage = new vorlage();
if(!$this->vorlage->getAktuelleVorlage($oe_kurzbz, $vorlage, $version))
die('Keine Dokumentenvorlage gefunden');
$this->content_xsl = new DOMDocument;
if(!$this->content_xsl->loadXML($this->vorlage->text))
die('unable to load xsl');
// Style Vorlage laden falls vorhanden
if($this->vorlage->style!='')
{
$this->styles_xsl = new DOMDocument;
if(!$this->styles_xsl->loadXML($vorlage->style))
die('unable to load styles xsl');
}
switch($this->vorlage->mimetype)
{
case 'application/vnd.oasis.opendocument.text':
$this->outputformat = 'odt';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.odt';
break;
case 'application/vnd.oasis.opendocument.spreadsheet':
$this->outputformat = 'ods';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.ods';
break;
default:
$this->outputformat = 'pdf';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.odt';
}
if($this->vorlage->bezeichnung!='')
$this->filename = $this->vorlage->bezeichnung;
else
$this->filename = $this->vorlage->vorlage_kurzbz;
}
/**
* Laedt die XML Daten fuer die XSL Transformation anhand eines Arrays
* @param $data Array mit Daten
* @param $root Bezeichnung des Root Nodes
* @return boolean true
*/
public function addDataArray($data, $root)
{
$this->xml_data = new DOMDocument;
$this->xml_data->loadXML($this->ConvertArrayToXML($data,$root));
return true;
}
/**
* XML Daten fuer die XSL Transformation
* @param $xml
* @return boolean true
*/
public function addDataXML($xml)
{
$this->xml_data = new DOMDocument;
$this->xml_data->loadXML($xml);
return true;
}
/**
* URL zu XML Datei die fuer XSLTransformation verwendet werden soll
* @param $xml URL zu XML
* @param $params GET Parameter die an XML URL uebergeben werden
* @return boolean true
*/
public function addDataURL($xml, $params)
{
$xml_found = false;
$addons = new addon();
foreach($addons->aktive_addons as $addon)
{
$xmlfile = DOC_ROOT.'addons/'.$addon.'/rdf/'.$xml;
if(file_exists($xmlfile))
{
$xml_found = true;
$xml_url = XML_ROOT.'../addons/'.$addon.'/rdf/'.$xml.'?'.$params;
break;
}
}
if(!$xml_found)
$xml_url=XML_ROOT.$xml.'?'.$params;
// Load the XML source
$this->xml_data = new DOMDocument;
if(!$this->xml_data->load($xml_url))
die('unable to load xml: '.$xml_url);
return true;
}
/**
* Fuegt ein Bild zum Dokument hinzu
* @param $path Pfad zum Bild im Filesystem
* @param $name Name des Bildes das es im Dokument haben soll ohne Pfad (zB 1.png)
* @param $contenttype Contenttype des Bilds (zB image/png)
*/
public function addImage($path, $name, $contenttype)
{
$this->images[]=array('path'=>$path,'name'=>$name,'contenttype'=>$contenttype);
}
/**
* Erstellt das ODT Dokument inklusive Bilder und konvertiert es ins gewuenschte Format
* @param $outputformat ODT, PDF, DOC
* @return true wenn ok
*/
public function create($outputformat=null)
{
if(!is_null($outputformat))
$this->outputformat=$outputformat;
// content.xml erstellen
$proc = new XSLTProcessor;
$proc->importStyleSheet($this->content_xsl);
$contentbuffer = $proc->transformToXml($this->xml_data);
$this->temp_folder = '/tmp/fhcunoconv-'.uniqid();
mkdir($this->temp_folder);
chdir($this->temp_folder);
file_put_contents('content.xml', $contentbuffer);
// styles.xml erstellen
if(!is_null($this->styles_xsl))
{
$style_proc = new XSLTProcessor;
$style_proc->importStyleSheet($this->styles_xsl);
$stylesbuffer = $style_proc->transformToXml($this->xml_data);
file_put_contents('styles.xml', $stylesbuffer);
}
// Template holen
$vorlage_found=false;
$addons = new addon();
foreach($addons->aktive_addons as $addon)
{
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$this->vorlage_file;
if(file_exists($zipfile))
{
$vorlage_found=true;
break;
}
}
if(!$vorlage_found)
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$this->vorlage_file;
$tempname_zip = 'out.zip';
if(!copy($zipfile, $tempname_zip))
die('copy failed');
exec("zip $tempname_zip content.xml");
if(!is_null($this->styles_xsl))
exec("zip $tempname_zip styles.xml");
// bilder hinzufuegen
if(count($this->images)>0)
{
// Unterordner fuer die Bilder erstellen
mkdir('Pictures');
// Manifest Datei holen
exec('unzip '.$tempname_zip.' META-INF/manifest.xml');
// Bild zur Manifest Datei hinzufuegen
$manifest = file_get_contents('META-INF/manifest.xml');
$manifest_xml = new DOMDocument;
if(!$manifest_xml->loadXML($manifest))
die('Manifest File ungueltig');
//root-node holen
$root = $manifest_xml->getElementsByTagName('manifest')->item(0);
foreach($this->images as $bild)
{
copy($bild['path'], 'Pictures/'.$bild['name']);
//Neues Element unterhalb des Root Nodes anlegen
$node = $manifest_xml->createElement("manifest:file-entry");
$node->setAttribute("manifest:full-path",'Pictures/'.$bild['name']);
$node->setAttribute("manifest:media-type",$bild['contenttype']);
$root->appendChild($node);
}
$out = $manifest_xml->saveXML();
//geaenderte Manifest Datei speichern und wieder ins Zip packen
file_put_contents('META-INF/manifest.xml', $out);
exec('zip '.$tempname_zip.' META-INF/*');
// Bilder zum ZIP-File hinzufuegen
exec("zip $tempname_zip Pictures/*");
}
clearstatcache();
switch($this->outputformat)
{
case 'pdf':
$this->temp_filename='out.pdf';
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > ".$this->temp_filename, $out, $ret);
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
break;
case 'doc':
$this->temp_filename='out.doc';
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > ".$this->temp_filename, $out, $ret);
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
break;
case 'odt':
default:
$this->temp_filename = $tempname_zip;
}
return true;
}
/**
* Liefert das Dokument mit den passenden Headern zum Download oder als ReturnValue
* @param $download wenn true werden Header gesendet und das Dokument ausgeliefert
* wenn false wird es als Returnwert zurueckgeliefert
* @return boolean true oder Dokument
*/
public function output($download=true)
{
$fsize = filesize($this->temp_filename);
if(!$handle = fopen($this->temp_filename,'r'))
die('load failed');
if($download)
{
switch($this->outputformat)
{
case 'pdf':
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$this->filename.'.pdf"');
header('Content-Length: '.$fsize);
break;
case 'doc':
header('Content-type: application/vnd.ms-word');
header('Content-Disposition: attachment; filename="'.$this->filename.'.doc"');
header('Content-Length: '.$fsize);
break;
case 'odt':
header('Content-type: application/vnd.oasis.opendocument.text');
header('Content-Disposition: attachment; filename="'.$this->filename.'.odt"');
header('Content-Length: '.$fsize);
break;
}
while (!feof($handle))
{
echo fread($handle, 8192);
}
fclose($handle);
return true;
}
else
{
$data = fread($handle, filesize($file));
fclose($handle);
return $data;
}
}
/**
* Loescht die Temporaeren Dateien die angelegt wurden
* @return boolean true
*/
public function close()
{
unlink('content.xml');
if($this->styles_xsl!='')
unlink('styles.xml');
unlink('out.zip');
unlink($this->temp_filename);
if(count($this->images)>0)
{
unlink('META-INF/manifest.xml');
foreach($this->images as $bild)
unlink('Pictures/'.$bild['name']);
rmdir('Pictures');
rmdir('META-INF');
}
rmdir($this->temp_folder);
return true;
}
/**
* Konvertiert das Array in ein XML
* @param $data PHP Array mit den Daten
* @param $rootElement Bezeichnung des XML Wurzelelements
* @param $xml_data SimpleXMLElement fuer Rekursionsaufloesung
* @return xml
*/
private function ConvertArrayToXML($data, $rootElement=null, $xml_data=null )
{
$_xml_data = $xml_data;
if ($_xml_data === null)
$_xml_data = new SimpleXMLElement($rootElement !== null ? '<'.$rootElement.' />' : '<root/>');
foreach( $data as $key => $value )
{
if( is_array($value) )
{
if( is_numeric($key) )
{
$key = 'item'.$key; //dealing with <0/>..<n/> issues
$this->ConvertArrayToXML($value, null, $_xml_data);
}
else
{
$subnode = $_xml_data->addChild($key);
$this->ConvertArrayToXML($value, null, $subnode);
}
}
else
$_xml_data->addChild("$key",htmlspecialchars("$value"));
}
return $_xml_data->asXML();
}
}
?>
+128 -96
View File
@@ -36,7 +36,7 @@ class frage extends basis_db
public $demo;
public $level;
public $kategorie_kurzbz;
public $sprache;
public $audio;
public $text;
@@ -45,12 +45,12 @@ class frage extends basis_db
public $prueflingfrage_id;
public $begintime;
public $endtime;
public $insertamum;
public $updateamum;
public $insertvon;
public $updatevon;
// ErgebnisArray
public $result=array();
public $num_rows=0;
@@ -63,7 +63,7 @@ class frage extends basis_db
public function __construct($frage_id=null)
{
parent::__construct();
if(!is_null($frage_id))
$this->load($frage_id);
}
@@ -73,13 +73,13 @@ class frage extends basis_db
* @param $frage_id ID der Frage die geladen werden soll
*/
public function load($frage_id)
{
{
if(!is_numeric($frage_id) || $frage_id=='')
{
$this->errormsg = 'Frage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($this->db_query($qry))
@@ -96,7 +96,7 @@ class frage extends basis_db
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->level = $row->level;
return true;
}
else
@@ -136,7 +136,7 @@ class frage extends basis_db
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->db_add_param($this->kategorie_kurzbz).','.
$this->db_add_param($this->gebiet_id, FHC_INTEGER).','.
@@ -159,7 +159,7 @@ class frage extends basis_db
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false).";";
}
if($this->db_query($qry))
{
if($this->new)
@@ -173,21 +173,21 @@ class frage extends basis_db
$this->db_query('COMMIT');
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
else
{
return true;
}
@@ -229,7 +229,7 @@ class frage extends basis_db
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false)." AND sprache=".$this->db_add_param($this->sprache).";";
}
if($this->db_query($qry))
{
return true;
@@ -250,7 +250,7 @@ class frage extends basis_db
*/
public function getFragen($gebiet_id, $nummer)
{
$qry = "SELECT * FROM testtool.tbl_frage
$qry = "SELECT * FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND nummer=".$this->db_add_param($nummer);
if($this->db_query($qry))
@@ -258,18 +258,18 @@ class frage extends basis_db
while($row = $this->db_fetch_object())
{
$obj = new frage();
$obj->frage_id = $row->frage_id;
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
$obj->gebiet_id = $row->gebiet_id;
$obj->level = $row->level;
$obj->nummer = $row->nummer;
$obj->demo = $this->db_parse_bool($row->demo);
$this->result[] = $obj;
}
return true;
return true;
}
else
{
@@ -277,7 +277,7 @@ class frage extends basis_db
return false;
}
}
/**
* Liefert die Fragen eines Gebietes
*
@@ -286,7 +286,7 @@ class frage extends basis_db
*/
public function getFragenGebiet($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_frage
$qry = "SELECT * FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." ORDER BY nummer";
if($this->db_query($qry))
@@ -294,18 +294,18 @@ class frage extends basis_db
while($row = $this->db_fetch_object())
{
$obj = new frage();
$obj->frage_id = $row->frage_id;
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
$obj->gebiet_id = $row->gebiet_id;
$obj->level = $row->level;
$obj->nummer = $row->nummer;
$obj->demo = $this->db_parse_bool($row->demo);
$this->result[] = $obj;
}
return true;
return true;
}
else
{
@@ -328,26 +328,26 @@ class frage extends basis_db
{
if($demo)
{
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
AND demo ";
if(!is_null($frage_id))
$qry.=" AND nummer<(SELECT nummer FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).")";
$qry .= " ORDER BY nummer DESC LIMIT 1";
}
else
else
{
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND
NOT demo ";
if(!is_null($frage_id))
$qry.=" AND tbl_pruefling_frage.nummer>(SELECT nummer FROM testtool.tbl_pruefling_frage WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND frage_id=".$this->db_add_param($frage_id, FHC_INTEGER)." LIMIT 1)";
elseif(is_null($frage_id) && $levelgebiet)
$qry.=" AND tbl_pruefling_frage.endtime is null ";
$qry.="ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1";
}
@@ -361,7 +361,7 @@ class frage extends basis_db
else
return false;
}
/**
* Laedt die Frage in der angegebenen Sprache
*
@@ -373,7 +373,7 @@ class frage extends basis_db
{
$qry = "SELECT * FROM testtool.tbl_frage_sprache JOIN testtool.tbl_frage USING(frage_id)
WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER)." AND sprache=".$this->db_add_param($sprache);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -387,26 +387,26 @@ class frage extends basis_db
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->level = $row->level;
$this->demo = $this->db_parse_bool($row->demo);
$this->nummer = $row->nummer;
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Laden der Frage';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Laden der Frage';
return false;
}
}
/**
* Liefert das naechste Level zu dem noch Fragen fehlen
*
@@ -420,10 +420,10 @@ class frage extends basis_db
if($row>0)
return $key;
}
return null;
}
/**
* Generiert den Fragenpool fuer den Pruefling bzw
* die naechste Frage bei gelevelten Gebieten
@@ -434,7 +434,7 @@ class frage extends basis_db
public function generateFragenpool($pruefling_id, $gebiet_id)
{
$gebiet = new gebiet($gebiet_id);
//Bei Levelgesteuerten Fragen wird nur die erste Frage angelegt
if($gebiet->level_start!='')
{
@@ -454,10 +454,10 @@ class frage extends basis_db
}
$maxfragen=1;
}
else
else
{
$maxfragen = $gebiet->maxfragen;
// Wie viele Fragen gibt es in diesem Gebiet
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage WHERE NOT demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($this->db_query($qry))
@@ -467,23 +467,23 @@ class frage extends basis_db
$fragengesamt = $row->anzahl;
}
}
// Wenn im Gebiet keine Maximalzahl angegeben ist, dann kommen alle Fragen in den Pool
if($maxfragen=='')
{
$maxfragen = $fragengesamt;
}
$level = array();
// Bei Levelgleichverteilung die Anzahl der Fragen pro level ermitteln
if($gebiet->levelgleichverteilung)
{
$qry = "SELECT level, count(*) as anzahl FROM testtool.tbl_frage
$qry = "SELECT level, count(*) as anzahl FROM testtool.tbl_frage
WHERE NOT demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
GROUP BY level
ORDER BY level";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -491,7 +491,7 @@ class frage extends basis_db
$level[$row->level]=round(($row->anzahl/$fragengesamt)*$maxfragen);
}
}
// Von jedem Gebiet muss mindestens eine Frage kommen
foreach ($level as $key=>$row)
{
@@ -502,9 +502,9 @@ class frage extends basis_db
}
}
}
$this->db_query('BEGIN;');
while($maxfragen>0)
{
//Bei levelgleichverteilung das Level der naechsten Frage holen
@@ -518,20 +518,20 @@ class frage extends basis_db
{
$nextlevel=null;
}
$this->frage_id=$this->getNewFrage($gebiet_id, $pruefling_id, $nextlevel);
if($this->frage_id=='')
break;
$this->pruefling_id=$pruefling_id;
//hoechste Nummer holen
$qry = "SELECT
$qry = "SELECT
tbl_pruefling_frage.nummer
FROM
testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE
WHERE
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)."
ORDER BY nummer DESC LIMIT 1;";
@@ -539,7 +539,7 @@ class frage extends basis_db
{
if($row = $this->db_fetch_object())
$this->nummer = $row->nummer+1;
else
else
$this->nummer = 1;
}
else
@@ -548,7 +548,7 @@ class frage extends basis_db
$this->db_query('ROLLBACK');
return false;
}
$this->begintime='';
$this->endtime='';
@@ -558,14 +558,14 @@ class frage extends basis_db
$this->db_query('ROLLBACK');
return false;
}
$maxfragen--;
}
$this->db_query('COMMIT;');
return true;
}
/**
* Laedt eine Prueflingfrage
*
@@ -579,7 +579,7 @@ class frage extends basis_db
$this->errormsg = 'prueflingfrage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE prueflingfrage_id=".$this->db_add_param($prueflingfrage_id, FHC_INTEGER);
if($this->db_query($qry))
{
@@ -591,22 +591,22 @@ class frage extends basis_db
$this->nummer = $row->nummer;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
return true;
}
else
else
{
$this->errormsg = 'Es wurde keine PrueflingFrage mit der uebergebenen ID gefunden';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
return false;
}
}
/**
* Laedt eine Prueflingfrage
*
@@ -621,15 +621,15 @@ class frage extends basis_db
$this->errormsg = 'Pruefling_id ist ungueltig';
return false;
}
if(!is_numeric($frage_id) || $frage_id=='')
{
$this->errormsg = 'Frage_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -640,21 +640,21 @@ class frage extends basis_db
$this->nummer = $row->nummer;
$this->begintime = $row->begintime;
$this->endtime = $row->endtime;
return true;
}
else
else
{
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
return false;
}
}
/**
* Prueft die Daten vor dem Speichern in die Tabelle tbl_pruefling_frage
*
@@ -666,13 +666,13 @@ class frage extends basis_db
$this->errormsg = 'Pruefling_id ist ungueltig';
return false;
}
if(!is_numeric($this->frage_id) || $this->frage_id=='')
{
$this->errormsg = 'Frage_id ist ungueltig';
return false;
return false;
}
if(!is_numeric($this->nummer))
{
$this->errormsg = 'Nummer ist ungueltig';
@@ -680,7 +680,7 @@ class frage extends basis_db
}
return true;
}
/**
* Speichert einen Eintrag in der Tabelle tbl_pruefling_frage
*
@@ -695,7 +695,7 @@ class frage extends basis_db
if(is_null($new))
$new = $this->new;
if($new)
{
$qry = 'INSERT INTO testtool.tbl_pruefling_frage(pruefling_id, frage_id, nummer, begintime, endtime) VALUES('.
@@ -705,7 +705,7 @@ class frage extends basis_db
$this->db_add_param($this->begintime).','.
$this->db_add_param($this->endtime).');';
}
else
else
{
$qry = 'UPDATE testtool.tbl_pruefling_frage SET'.
' pruefling_id='.$this->db_add_param($this->pruefling_id, FHC_INTEGER).','.
@@ -715,18 +715,18 @@ class frage extends basis_db
' endtime='.$this->db_add_param($this->endtime).
" WHERE prueflingfrage_id=".$this->db_add_param($this->prueflingfrage_id, FHC_INTEGER, false);
}
if($this->db_query($qry))
{
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Speichern in tbl_pruefling_frage';
return false;
}
}
/**
* Sucht eine neue Frage fuer einen Pruefling
*
@@ -738,35 +738,35 @@ class frage extends basis_db
{
$gebiet = new gebiet($gebiet_id);
$pruefling = new pruefling();
//Frage suchen die dem pruefling noch nicht zugeordnet ist
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
$qry = "SELECT frage_id FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER, false)."
)
AND NOT demo";
// Wenn die Frage abhaengig vom level sein soll, dann den aktuellen Level ermitteln und dazuhaengen
if($gebiet->level_start!='')
{
$level2 = $pruefling->getPrueflingLevel($pruefling_id, $gebiet_id);
$level2 = $pruefling->getPrueflingLevel($pruefling_id, $gebiet_id);
$qry.=" AND level=".$this->db_add_param($level2);
}
// Bei Levelgleichverteilung wird der Level mituebergeben
if(!is_null($level))
{
$qry.=" AND level=".$this->db_add_param($level);
}
//Sortierung
if($gebiet->zufallfrage)
$qry .= " ORDER BY random()";
else
else
$qry .= " ORDER BY nummer ASC";
$qry .= " LIMIT 1";
if($this->db_query($qry))
@@ -775,17 +775,49 @@ class frage extends basis_db
{
return $row->frage_id;
}
else
else
{
$this->errormsg = 'Es gibt keine Fragen die den Kriterien entsprechen';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Holen der Frage';
return false;
}
}
public function delete($frage_id)
{
$qry = "SELECT * FROM
testtool.tbl_antwort
JOIN testtool.tbl_vorschlag USING(vorschlag_id)
WHERE tbl_vorschlag.frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result)>0)
{
$this->errormsg = 'Frage kann nicht gelöscht werden da bereits Antworten vorhanden sind';
return false;
}
}
$qry = "
DELETE FROM testtool.tbl_vorschlag_sprache WHERE vorschlag_id IN (SELECT vorschlag_id FROM testtool.tbl_vorschlag WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).");
DELETE FROM testtool.tbl_vorschlag WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).";
DELETE FROM testtool.tbl_frage_sprache WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).";
DELETE FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim loeschen der Frage';
return false;
}
}
}
?>
+226 -77
View File
@@ -26,7 +26,7 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class gebiet extends basis_db
class gebiet extends basis_db
{
//Tabellenspalten
public $gebiet_id;
@@ -48,7 +48,7 @@ class gebiet extends basis_db
public $insertvon;
public $updateamum;
public $updatevon;
// ErgebnisArray
public $result=array();
public $new;
@@ -60,7 +60,7 @@ class gebiet extends basis_db
public function __construct($gebiet_id=null)
{
parent::__construct();
if(!is_null($gebiet_id))
$this->load($gebiet_id);
}
@@ -98,7 +98,7 @@ class gebiet extends basis_db
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->antwortenprozeile = $row->antwortenprozeile;
return true;
}
else
@@ -113,7 +113,7 @@ class gebiet extends basis_db
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
@@ -184,15 +184,15 @@ class gebiet extends basis_db
{
if(is_null($new))
$new = $this->new;
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($new)
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_gebiet (kurzbz, bezeichnung, beschreibung, zeit, multipleresponse,
kategorien, maxfragen, zufallfrage, zufallvorschlag, level_start, level_sprung_auf, level_sprung_ab,
$qry = 'BEGIN;INSERT INTO testtool.tbl_gebiet (kurzbz, bezeichnung, beschreibung, zeit, multipleresponse,
kategorien, maxfragen, zufallfrage, zufallvorschlag, level_start, level_sprung_auf, level_sprung_ab,
levelgleichverteilung, maxpunkte, antwortenprozeile, insertamum, insertvon , updateamum, updatevon) VALUES('.
$this->db_add_param($this->kurzbz).','.
$this->db_add_param($this->bezeichnung).','.
@@ -235,7 +235,7 @@ class gebiet extends basis_db
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE gebiet_id=".$this->db_add_param($this->gebiet_id, FHC_INTEGER, false).";";
}
if($this->db_query($qry))
{
//aktuelle ID aus der Sequence holen
@@ -250,14 +250,14 @@ class gebiet extends basis_db
$this->db_query('COMMIT');
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK;');
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Lesen der Sequence';
$this->db_query('ROLLBACK');
@@ -273,7 +273,7 @@ class gebiet extends basis_db
return false;
}
}
/**
* prueft das Gebiet auf Gueltigkeit
* (diverse Plausichecks)
@@ -284,19 +284,19 @@ class gebiet extends basis_db
{
$this->errormsg = '';
$this->load($gebiet_id);
//wenn levels verwendet werden muss maxfragen gesetzt sein
if($this->level_start!='' && $this->maxfragen=='')
{
$this->errormsg .= "Wenn Levels verwendet werden, muss die maximale Fragenanzahl gesetzt sein.\n";
}
//Levelgleichverteilung gibt es nur bei nicht geleveltem ablauf
if($this->level_start!='' && $this->levelgleichverteilung)
{
$this->errormsg .= "Levelgleichverteilung ist nur dann erlaubt, wenn der Ablauf nicht gelevelt ist.\n";
}
//Von jedem level muessen mindestens maxfragen vorhanden sein wenn levels aktiv ist
if($this->level_start!='')
{
@@ -312,9 +312,9 @@ class gebiet extends basis_db
}
}
}
//Pruefen ob jede Fragen mindestens 2 Vorschlaege hat
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
WHERE (SELECT count(*) as anzahl FROM testtool.tbl_vorschlag WHERE frage_id=tbl_frage.frage_id)<2
AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND NOT demo;";
if($this->db_query($qry))
@@ -337,7 +337,7 @@ class gebiet extends basis_db
}
}
}
// Wenn Levelgleichverteilung true ist, muss maxfragen mindestens so gross wie die Anzahl der level sein
if($this->levelgleichverteilung)
{
@@ -351,13 +351,13 @@ class gebiet extends basis_db
if($row->anzahl>$this->maxfragen)
{
$this->errormsg .= "Wenn Levelgleichverteilung gesetzt ist, muss maxfragen groesser als die Anzahl der verwendeten Levels sein\n";
}
}
}
}
}
}
// Wenn zufallsfrage=true und level_start!='' oder levelgleichverteilung
// Wenn zufallsfrage=true und level_start!='' oder levelgleichverteilung
// dann darf die punkteanzahl pro level/Frage sich nicht unterscheiden
if($this->zufallfrage && ($this->level_start!='' || $this->levelgleichverteilung))
{
@@ -365,10 +365,10 @@ class gebiet extends basis_db
SELECT level, count(*) as anzahl FROM (
SELECT level, punkte, count(*) as anzahl FROM (
SELECT level, sum(punkte) as punkte
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE punkte>0 AND not demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
GROUP BY frage_id, level) as a
GROUP BY level, punkte ) as b
GROUP BY frage_id, level) as a
GROUP BY level, punkte ) as b
GROUP BY level) as c
WHERE c.anzahl>1";
if($this->db_query($qry))
@@ -379,33 +379,33 @@ class gebiet extends basis_db
}
}
}
// kein Multipleresponse bei gelevelten Gebieten
if($this->level_start!='' && $this->level_start!=0 && $this->multipleresponse)
{
$this->errormsg .= "Bei gelevelten Gebieten ist Multipleresponse nicht erlaubt\n";
}
// maxpunkte muss eingetragen sein
if($this->maxpunkte=='' || $this->maxpunkte==0)
{
$this->errormsg = "Es wurden keine Maximalpunkte fuer dieses Gebiet eingetragen\n";
}
// Pruefung, ob eine Frage mehrere gleiche Antworten oder gleiche Bilder hat
$qry = "SELECT text AS antwort, sprache, frage_id, tbl_frage.nummer, COUNT(text) AS Anz
FROM testtool.tbl_vorschlag_sprache
FROM testtool.tbl_vorschlag_sprache
JOIN testtool.tbl_vorschlag USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
AND (bild IS NULL AND audio IS NULL)
GROUP BY antwort,frage_id,tbl_frage.nummer,sprache
HAVING ( COUNT(text) > 1 )
UNION
SELECT bild AS antwort, sprache, frage_id, tbl_frage.nummer, COUNT(bild) AS Anz
FROM testtool.tbl_vorschlag_sprache
FROM testtool.tbl_vorschlag_sprache
JOIN testtool.tbl_vorschlag USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
@@ -419,13 +419,13 @@ class gebiet extends basis_db
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) Sprache $row->sprache hat mehrere gleiche Antworten.\n";
}
}
if($this->errormsg=='')
return true;
else
else
return false;
}
/**
* Holt alle Gebiete aus der DB
*
@@ -434,13 +434,13 @@ class gebiet extends basis_db
public function getAll()
{
$qry = 'SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new gebiet();
$obj->gebiet_id = $row->gebiet_id;
$obj->kurzbz = $row->kurzbz;
$obj->bezeichnung = $row->bezeichnung;
@@ -461,19 +461,19 @@ class gebiet extends basis_db
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->antwortenprozeile = $row->antwortenprozeile;
$this->result[] = $obj;
}
return true;
}
else
else
{
$this->errormsg = 'Fehler in Fkt getAll()';
return false;
}
}
/**
* Berechnet die maxpunkte fuer das Gebiet
*
@@ -483,10 +483,10 @@ class gebiet extends basis_db
{
if(!$this->load($gebiet_id))
return false;
if(!$this->levelgleichverteilung && ($this->level_start=='' || $this->level_start==0))
{
$qry = "SELECT sum(punkte) as max
$qry = "SELECT sum(punkte) as max
FROM testtool.tbl_vorschlag JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND NOT demo";
if($this->maxfragen!='' && $this->maxfragen>0)
@@ -500,11 +500,11 @@ class gebiet extends basis_db
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
FROM
(
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER).") as fragengesamt
FROM
FROM
testtool.tbl_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE
@@ -522,11 +522,11 @@ class gebiet extends basis_db
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
FROM
(
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
SELECT
level, punkte, count(*) as anz,
(SELECT count(*) FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER).") as fragengesamt
FROM
FROM
testtool.tbl_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE
@@ -539,19 +539,19 @@ class gebiet extends basis_db
elseif($this->level_start!='')
{
//Maximalpunkte fuer geleveltes Gebiet ermitteln
//Punkte pro Level holen
$qry = "
SELECT level, punkte
SELECT level, punkte
FROM
(
SELECT level, frage_id, sum(punkte) as punkte
SELECT level, frage_id, sum(punkte) as punkte
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND level>=".$this->db_add_param($this->level_start)." AND NOT demo
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND level>=".$this->db_add_param($this->level_start)." AND NOT demo
GROUP BY level, frage_id
) as a
) as a
GROUP by level, punkte ORDER BY level";
if($this->db_query($qry))
{
$maxfragen = $this->maxfragen;
@@ -572,26 +572,26 @@ class gebiet extends basis_db
return $maxpunkte;
}
}
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
return $row->max;
}
else
else
{
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
return false;
}
}
/**
* Prueft ob das Gebiet bereits gestartet wurde. Wahlweise pruefling_id oder prestudent_id
*
@@ -603,7 +603,7 @@ class gebiet extends basis_db
public function isGestartet($gebiet_id, $pruefling_id=null, $prestudent_id=null)
{
$this->errormsg='';
if(!is_numeric($gebiet_id) || $gebiet_id=='')
{
$this->errormsg = 'Gebiet_id muss eine gueltige Zahl sein';
@@ -619,40 +619,189 @@ class gebiet extends basis_db
$this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein';
return false;
}
$qry = ' SELECT
begintime
FROM
$qry = ' SELECT
begintime
FROM
testtool.tbl_pruefling_frage
JOIN
JOIN
testtool.tbl_pruefling USING (pruefling_id)
JOIN
JOIN
testtool.tbl_frage USING (frage_id)
WHERE ';
if (!is_null($pruefling_id))
$qry.=' pruefling_id='.$this->db_add_param($pruefling_id, FHC_INTEGER);
else
$qry.=' prestudent_id='.$this->db_add_param($prestudent_id, FHC_INTEGER);
$qry.=' AND
$qry.=' AND
gebiet_id='.$this->db_add_param($gebiet_id, FHC_INTEGER).'
AND
AND
begintime IS NOT NULL';
if($result = $this->db_query($qry))
{
if($this->db_fetch_object($result))
return true;
return true;
else
{
return false;
{
return false;
}
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
/**
* Laedt die Ablaufe die zu einem Gebiet zugeordnet sind
* @param $gebiet_id
* @return boolean true wenn ok, false im Fehlerfall
*/
public function loadAblaufGebiet($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_ablauf WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->ablauf_id = $row->ablauf_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->gebiet_id = $row->gebiet_id;
$obj->reihung = $row->reihung;
$obj->gewicht = $row->gewicht;
$obj->semester = $row->semester;
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return false;
}
}
/**
* Loescht ein Gebiet und den zugeordneten Ablauf
* @param $gebiet_id
* @return boolean true wenn ok, false im Fehlerfall
*/
public function delete($gebiet_id)
{
$qry = "SELECT * FROM testtool.tbl_frage WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result)>0)
{
$this->errormsg = 'Bitte entfernen Sie zuerst alle Fragen aus dem Gebiet';
return false;
}
}
$qry = "
DELETE FROM testtool.tbl_ablauf WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
DELETE FROM testtool.tbl_gebiet WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Loeschen des Gebiets';
return false;
}
}
/**
* Loescht einen Ablauf
* @param $ablauf_id
* @return boolean true wenn ok, false im Fehlerfall
*/
public function deleteAblaufZuordnung($ablauf_id)
{
$qry = "DELETE FROM testtool.tbl_ablauf WHERE ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Entfernen des Ablaufs';
return false;
}
}
/**
* Laedt alle AblaufVorabe Eintraege
* @return boolean true wenn ok, false im Fehlerfall
*/
public function getAblaufVorgaben()
{
$qry = "SELECT * FROM testtool.tbl_ablauf_vorgaben ORDER BY studiengang_kz";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->sprache = $row->sprache;
$obj->sprachwahl = $this->db_parse_bool($row->sprachwahl);
$obj->content_id = $row->content_id;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Speichert den Ablauf
*/
public function saveAblauf()
{
if($this->new)
{
$qry = "INSERT INTO testtool.tbl_ablauf (studiengang_kz, gebiet_id, reihung,gewicht,semester,ablauf_vorgaben_id, insertamum, insertvon) VALUES(".
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
$this->db_add_param($this->gebiet_id, FHC_INTEGER).','.
$this->db_add_param($this->reihung, FHC_INTEGER).','.
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
$this->db_add_param($this->semester, FHC_INTEGER).','.
$this->db_add_param($this->ablauf_vorgaben_id, FHC_INTEGER).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).');';
}
else
{
$this->errormsg='not implemented';
return false;
}
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return true;
}
}
}
?>
+45
View File
@@ -489,4 +489,49 @@ class lehreinheitmitarbeiter extends basis_db
return $ret;
}
/**
* Laedt die Lektoren einer Lehrveranstlatung in einem Studiensemester
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @return array + true wenn ok / false im Fehlerfall
*/
public function getMitarbeiterLV($lehrveranstaltung_id, $studiensemester_kurzbz)
{
if(!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehreinheit_id ist ungueltig';
return false;
}
$qry = "SELECT
vw_mitarbeiter.uid, vorname, nachname, titelpre, titelpost
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN campus.vw_mitarbeiter ON(tbl_lehreinheitmitarbeiter.mitarbeiter_uid=vw_mitarbeiter.uid)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry .=" ORDER BY nachname, vorname;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vorname = $row->vorname;
$obj->nachname = $row->nachname;
$obj->uid = $row->uid;
$obj->titelpre = $row->titelpre;
$obj->titelpost = $row->titelpost;
$this->result[] = $obj;
}
return true;
}
return false;
}
}
+12 -9
View File
@@ -17,19 +17,22 @@
*
* Authors: Andreas Moik <moik@technikum-wien.at>
*/
//require_once('/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
//require_once(dirname(__FILE__).'/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
$dr = DOC_ROOT;
$dr = str_replace($_SERVER["DOCUMENT_ROOT"], "", $dr);
//Originaldateien des Herstellers
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'vendor/FHC-vendor/easyui/themes/icon.css">';
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'vendor/FHC-vendor/easyui/themes/gray/easyui.css">';
//Originaldateien des herstellers
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'vendor/easyui/themes/icon.css">';
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'vendor/easyui/themes/gray/easyui.css">';
echo '<script src="'.APP_ROOT.'vendor/easyui/jquery.min.js"></script>';
echo '<script src="'.APP_ROOT.'vendor/easyui/jquery.easyui.min.js"></script>';
echo '<script src="'.$dr.'vendor/FHC-vendor/easyui/jquery.min.js"></script>';
echo '<script src="'.$dr.'vendor/FHC-vendor/easyui/jquery.easyui.min.js"></script>';
//Anpassungen
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'include/vendor_custom/easyui/easyui.css">';
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'include/vendor_custom/easyui/icon.css">';
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'include/vendor_custom/easyui/easyui.css">';
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'include/vendor_custom/easyui/icon.css">';
?>
+35
View File
@@ -0,0 +1,35 @@
<?php
/* Copyright (C) 2015 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: Andreas Moik <moik@technikum-wien.at>
*/
//require_once(dirname(__FILE__).'/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
$dr = DOC_ROOT;
$dr = str_replace($_SERVER["DOCUMENT_ROOT"], "", $dr);
//Originaldateien des Herstellers
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'vendor/FHC-vendor/jquery-tablesorter/css/theme.default.css">';
echo '<script src="'.$dr.'vendor/FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.js"></script>';
//Anpassungen
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'include/vendor_custom/jquery-tablesorter/tablesort.css">';
?>
+29
View File
@@ -0,0 +1,29 @@
<?php
/* Copyright (C) 2015 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: Andreas Moik <moik@technikum-wien.at>
*/
//require_once(dirname(__FILE__).'/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
$dr = DOC_ROOT;
$dr = str_replace($_SERVER["DOCUMENT_ROOT"], "", $dr);
//Originaldateien des Herstellers
echo '<script src="'.$dr.'vendor/components/jquery/jquery.min.js"></script>';
?>
+2 -2
View File
@@ -77,12 +77,12 @@ class news extends basis_db
$qry.= " AND (now()-datum)<interval '$maxalter days'";
}
if(!$all)
$qry.=' AND datum<=now() AND (datum_bis>= now()::date OR datum_bis is null)';
$qry.=" AND datum<=now() AND (datum_bis>= now()::date OR datum_bis is null)";
if(trim($fachbereich_kurzbz)!='*')
{
if(is_null($fachbereich_kurzbz) || trim($fachbereich_kurzbz)=='')
$qry.=' AND fachbereich_kurzbz is null';
$qry.=" AND fachbereich_kurzbz is null";
else
$qry.=" AND fachbereich_kurzbz=".$this->db_add_param(trim($fachbereich_kurzbz));
}
+2 -1
View File
@@ -56,7 +56,7 @@ class sprache extends basis_db
*/
public function load($sprache)
{
$qry = "SELECT * FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache, FHC_STRING, false).";";
$qry = "SELECT *,".$this->getSprachQuery('bezeichnung')." FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache, FHC_STRING, false).";";
if($this->db_query($qry))
{
@@ -66,6 +66,7 @@ class sprache extends basis_db
$this->locale = $row->locale;
$this->index = $row->index;
$this->content = $this->db_parse_bool($row->content);
$this->bezeichnung_arr=$this->parseSprachResult('bezeichnung',$row);
return true;
}
else
@@ -0,0 +1,44 @@
/* tables */
table.tablesorter {
font-family:arial;
/*background-color: white;*/
margin:10px 0pt 15px;
font-size: 8pt;
width: 100%;
text-align: left;
}
table.tablesorter thead tr th, table.tablesorter tfoot tr th {
background:#DCE4EF;
border: 1px solid #FFF;
font-size: 8pt;
padding: 4px;
}
table.tablesorter thead tr .header {
background-image: url(../../../skin/images/bg_sort.gif);
background-repeat: no-repeat;
background-position: center left;
padding-left: 20px;
cursor: pointer;
}
table.tablesorter tbody td {
padding: 4px;
background-color: #EEEEEE;
vertical-align: top;
}
table.tablesorter tbody tr.odd td {
background-color:lightgray;
}
table.tablesorter thead tr .headerSortUp {
background-image: url(../../../skin/images/asc.gif);
}
table.tablesorter thead tr .headerSortDown {
background-image: url(../../../skin/images/desc.gif);
}
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
background-color: #8dbdd8;
}
TD,TH
{
font-size: 9pt;
}
+1 -1
View File
@@ -1,5 +1,5 @@
<!ENTITY window.title "FAS">
<!ENTITY window.version "3.0">
<!ENTITY window.version "3.2a">
<!-- MENUE -->
+1 -1
View File
@@ -1,5 +1,5 @@
<!ENTITY window.title "Planner">
<!ENTITY window.version "0.1 vom 12.April.2011">
<!ENTITY window.version "3.2a">
<!ENTITY menu-file.label "Datei">
+1 -1
View File
@@ -1,5 +1,5 @@
<!ENTITY window.title "Tempus">
<!ENTITY window.version "3.0">
<!ENTITY window.version "3.2a">
<!ENTITY menu-file.label "Datei">
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

+2
View File
@@ -0,0 +1,2 @@
<?php
// touched by Christian Paminger
File diff suppressed because it is too large Load Diff
+369 -3
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2015 FH Technikum-Wien
/* Copyright (C) 2015 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -20,7 +20,373 @@
* Beschreibung:
* Dieses Skript prueft die Datenbank auf aktualitaet, dabei werden fehlende Attribute angelegt.
*/
echo "keine Updates vorhanden!";
// Neue Spalte beschreibung_mehrsprachig bei tbl_dokument
if(!@$db->db_query("SELECT dokumentbeschreibung_mehrsprachig FROM public.tbl_dokument LIMIT 1"))
{
$qry = "
ALTER TABLE public.tbl_dokument ADD COLUMN dokumentbeschreibung_mehrsprachig text[];
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_dokument '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte dokumentbeschreibung_mehrsprachig in public.tbl_dokument hinzugefügt';
}
// Neue Spalte beschreibung_mehrsprachig bei tbl_dokumentstudiengang
if(!@$db->db_query("SELECT beschreibung_mehrsprachig FROM public.tbl_dokumentstudiengang LIMIT 1"))
{
$qry = "
ALTER TABLE public.tbl_dokumentstudiengang ADD COLUMN beschreibung_mehrsprachig text[];
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_dokumentstudiengang '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte beschreibung_mehrsprachig in public.tbl_dokumentstudiengang hinzugefügt';
}
// Berechtigungen fuer web User erteilen
if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_frage' AND table_schema='testtool' AND grantee='web' AND privilege_type='DELETE'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "GRANT DELETE ON testtool.tbl_frage TO web;
GRANT DELETE ON testtool.tbl_gebiet TO web;
GRANT SELECT, UPDATE, INSERT, DELETE ON testtool.tbl_ablauf TO web;
GRANT SELECT, UPDATE ON testtool.tbl_ablauf_ablauf_id_seq TO web;
";
if(!$db->db_query($qry))
echo '<strong>Testtool Berechtigungen: '.$db->db_last_error().'</strong><br>';
else
echo 'Löschrechte fuer Testtool Tabellen fuer web user gesetzt ';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
echo '<br><br><br>';
$tabellen=array(
"bis.tbl_archiv" => array("archiv_id","studiensemester_kurzbz","meldung","html","studiengang_kz","insertamum","insertvon","typ"),
"bis.tbl_ausbildung" => array("ausbildungcode","ausbildungbez","ausbildungbeschreibung"),
"bis.tbl_berufstaetigkeit" => array("berufstaetigkeit_code","berufstaetigkeit_bez","berufstaetigkeit_kurzbz"),
"bis.tbl_beschaeftigungsart1" => array("ba1code","ba1bez","ba1kurzbz"),
"bis.tbl_beschaeftigungsart2" => array("ba2code","ba2bez"),
"bis.tbl_beschaeftigungsausmass" => array("beschausmasscode","beschausmassbez","min","max"),
"bis.tbl_besqual" => array("besqualcode","besqualbez"),
"bis.tbl_bisfunktion" => array("bisverwendung_id","studiengang_kz","sws","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","student_uid","updateamum","updatevon","insertamum","insertvon","ext_id","ort","universitaet","lehreinheit_id"),
"bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre"),
"bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"),
"bis.tbl_entwicklungsteam" => array("mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id"),
"bis.tbl_gemeinde" => array("gemeinde_id","plz","name","ortschaftskennziffer","ortschaftsname","bulacode","bulabez","kennziffer"),
"bis.tbl_hauptberuf" => array("hauptberufcode","bezeichnung"),
"bis.tbl_lgartcode" => array("lgartcode","kurzbz","bezeichnung","beantragung","lgart_biscode"),
"bis.tbl_mobilitaetsprogramm" => array("mobilitaetsprogramm_code","kurzbz","beschreibung","sichtbar","sichtbar_outgoing"),
"bis.tbl_nation" => array("nation_code","entwicklungsstand","eu","ewr","kontinent","kurztext","langtext","engltext","sperre"),
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle"),
"bis.tbl_verwendung" => array("verwendung_code","verwendungbez"),
"bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung"),
"bis.tbl_zgvmaster" => array("zgvmas_code","zgvmas_bez","zgvmas_kurzbz","bezeichnung"),
"bis.tbl_zgvdoktor" => array("zgvdoktor_code", "zgvdoktor_bez", "zgvdoktor_kurzbz","bezeichnung"),
"bis.tbl_zweck" => array("zweck_code","kurzbz","bezeichnung"),
"campus.tbl_abgabe" => array("abgabe_id","abgabedatei","abgabezeit","anmerkung"),
"campus.tbl_anwesenheit" => array("anwesenheit_id","uid","einheiten","datum","anwesend","lehreinheit_id","anmerkung","ext_id"),
"campus.tbl_beispiel" => array("beispiel_id","uebung_id","nummer","bezeichnung","punkte","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_benutzerlvstudiensemester" => array("uid","studiensemester_kurzbz","lehrveranstaltung_id"),
"campus.tbl_content" => array("content_id","template_kurzbz","updatevon","updateamum","insertamum","insertvon","oe_kurzbz","menu_open","aktiv","beschreibung"),
"campus.tbl_contentchild" => array("contentchild_id","content_id","child_content_id","updatevon","updateamum","insertamum","insertvon","sort"),
"campus.tbl_contentgruppe" => array("content_id","gruppe_kurzbz","insertamum","insertvon"),
"campus.tbl_contentlog" => array("contentlog_id","contentsprache_id","uid","start","ende"),
"campus.tbl_contentsprache" => array("contentsprache_id","content_id","sprache","version","sichtbar","content","reviewvon","reviewamum","updateamum","updatevon","insertamum","insertvon","titel","gesperrt_uid"),
"campus.tbl_coodle" => array("coodle_id","titel","beschreibung","coodle_status_kurzbz","dauer","endedatum","insertamum","insertvon","updateamum","updatevon","ersteller_uid"),
"campus.tbl_coodle_ressource" => array("coodle_ressource_id","coodle_id","uid","ort_kurzbz","email","name","zugangscode","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_coodle_termin" => array("coodle_termin_id","coodle_id","datum","uhrzeit","auswahl"),
"campus.tbl_coodle_ressource_termin" => array("coodle_ressource_id","coodle_termin_id","insertamum","insertvon"),
"campus.tbl_coodle_status" => array("coodle_status_kurzbz","bezeichnung"),
"campus.tbl_dms" => array("dms_id","oe_kurzbz","dokument_kurzbz","kategorie_kurzbz"),
"campus.tbl_dms_kategorie" => array("kategorie_kurzbz","bezeichnung","beschreibung","parent_kategorie_kurzbz"),
"campus.tbl_dms_kategorie_gruppe" => array("kategorie_kurzbz","gruppe_kurzbz","insertamum","insertvon"),
"campus.tbl_dms_version" => array("dms_id","version","filename","mimetype","name","beschreibung","letzterzugriff","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_erreichbarkeit" => array("erreichbarkeit_kurzbz","beschreibung","farbe"),
"campus.tbl_feedback" => array("feedback_id","betreff","text","datum","uid","lehrveranstaltung_id","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_freebusy" => array("freebusy_id","uid","freebusytyp_kurzbz","url","aktiv","bezeichnung","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_freebusytyp" => array("freebusytyp_kurzbz","bezeichnung","beschreibung","url_vorlage"),
"campus.tbl_infoscreen" => array("infoscreen_id","bezeichnung","beschreibung","ipadresse"),
"campus.tbl_infoscreen_content" => array("infoscreen_content_id","infoscreen_id","content_id","gueltigvon","gueltigbis","insertamum","insertvon","updateamum","updatevon","refreshzeit","exklusiv"),
"campus.tbl_legesamtnote" => array("student_uid","lehreinheit_id","note","benotungsdatum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_lehre_tools" => array("lehre_tools_id","bezeichnung","kurzbz","basis_url","logo_dms_id"),
"campus.tbl_lehre_tools_organisationseinheit" => array("lehre_tools_id","oe_kurzbz","aktiv"),
"campus.tbl_lehrveranstaltung_pruefung" => array("lehrveranstaltung_pruefung_id","lehrveranstaltung_id","pruefung_id"),
"campus.tbl_lvgesamtnote" => array("lehrveranstaltung_id","studiensemester_kurzbz","student_uid","note","mitarbeiter_uid","benotungsdatum","freigabedatum","freigabevon_uid","bemerkung","updateamum","updatevon","insertamum","insertvon","punkte","ext_id"),
"campus.tbl_lvinfo" => array("lehrveranstaltung_id","sprache","titel","lehrziele","lehrinhalte","methodik","voraussetzungen","unterlagen","pruefungsordnung","anmerkung","kurzbeschreibung","genehmigt","aktiv","updateamum","updatevon","insertamum","insertvon","anwesenheit"),
"campus.tbl_news" => array("news_id","uid","studiengang_kz","fachbereich_kurzbz","semester","betreff","text","datum","verfasser","updateamum","updatevon","insertamum","insertvon","datum_bis","content_id"),
"campus.tbl_notenschluessel" => array("lehreinheit_id","note","punkte"),
"campus.tbl_notenschluesseluebung" => array("uebung_id","note","punkte"),
"campus.tbl_paabgabetyp" => array("paabgabetyp_kurzbz","bezeichnung"),
"campus.tbl_paabgabe" => array("paabgabe_id","projektarbeit_id","paabgabetyp_kurzbz","fixtermin","datum","kurzbz","abgabedatum", "insertvon","insertamum","updatevon","updateamum"),
"campus.tbl_pruefungsfenster" => array("pruefungsfenster_id","studiensemester_kurzbz","oe_kurzbz","start","ende"),
"campus.tbl_pruefung" => array("pruefung_id","mitarbeiter_uid","studiensemester_kurzbz","pruefungsfenster_id","pruefungstyp_kurzbz","titel","beschreibung","methode","einzeln","storniert","insertvon","insertamum","updatevon","updateamum","pruefungsintervall"),
"campus.tbl_pruefungstermin" => array("pruefungstermin_id","pruefung_id","von","bis","teilnehmer_max","teilnehmer_min","anmeldung_von","anmeldung_bis","ort_kurzbz","sammelklausur"),
"campus.tbl_pruefungsanmeldung" => array("pruefungsanmeldung_id","uid","pruefungstermin_id","lehrveranstaltung_id","status_kurzbz","wuensche","reihung","kommentar","statusupdatevon","statusupdateamum","anrechnung_id"),
"campus.tbl_pruefungsstatus" => array("status_kurzbz","bezeichnung"),
"campus.tbl_reservierung" => array("reservierung_id","ort_kurzbz","studiengang_kz","uid","stunde","datum","titel","beschreibung","semester","verband","gruppe","gruppe_kurzbz","veranstaltung_id","insertamum","insertvon"),
"campus.tbl_resturlaub" => array("mitarbeiter_uid","resturlaubstage","mehrarbeitsstunden","updateamum","updatevon","insertamum","insertvon","urlaubstageprojahr"),
"campus.tbl_studentbeispiel" => array("student_uid","beispiel_id","vorbereitet","probleme","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_studentuebung" => array("student_uid","mitarbeiter_uid","abgabe_id","uebung_id","note","mitarbeitspunkte","punkte","anmerkung","benotungsdatum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_template" => array("template_kurzbz","bezeichnung","xsd","xslt_xhtml","xslfo_pdf"),
"campus.tbl_uebung" => array("uebung_id","gewicht","punkte","angabedatei","freigabevon","freigabebis","abgabe","beispiele","statistik","bezeichnung","positiv","defaultbemerkung","lehreinheit_id","maxstd","maxbsp","liste_id","prozent","nummer","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltung" => array("veranstaltung_id","titel","beschreibung","veranstaltungskategorie_kurzbz","inhalt","start","ende","freigabevon","freigabeamum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltungskategorie" => array("veranstaltungskategorie_kurzbz","bezeichnung","bild","farbe"),
"campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid"),
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),
"fue.tbl_aktivitaet" => array("aktivitaet_kurzbz","beschreibung","sort"),
"fue.tbl_aufwandstyp" => array("aufwandstyp_kurzbz","bezeichnung"),
"fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id"),
"fue.tbl_projektphase" => array("projektphase_id","projekt_kurzbz","projektphase_fk","bezeichnung","typ","beschreibung","start","ende","budget","insertamum","insertvon","updateamum","updatevon","personentage","farbe","ressource_id"),
"fue.tbl_projekttask" => array("projekttask_id","projektphase_id","bezeichnung","beschreibung","aufwand","mantis_id","insertamum","insertvon","updateamum","updatevon","projekttask_fk","erledigt","ende","ressource_id","scrumsprint_id"),
"fue.tbl_projekt_dokument" => array("projekt_dokument_id","projektphase_id","projekt_kurzbz","dms_id"),
"fue.tbl_projekt_ressource" => array("projekt_ressource_id","projekt_kurzbz","projektphase_id","ressource_id","funktion_kurzbz","beschreibung","aufwand"),
"fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"),
"fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"),
"fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"),
"kommune.tbl_match" => array("match_id","team_sieger","wettbewerb_kurzbz","team_gefordert","team_forderer","gefordertvon","gefordertamum","matchdatumzeit","matchort","matchbestaetigtvon","matchbestaetigtamum","ergebniss","bestaetigtvon","bestaetigtamum"),
"kommune.tbl_team" => array("team_kurzbz","bezeichnung","beschreibung","logo"),
"kommune.tbl_teambenutzer" => array("uid","team_kurzbz"),
"kommune.tbl_wettbewerb" => array("wettbewerb_kurzbz","regeln","forderungstage","teamgroesse","wbtyp_kurzbz","uid","icon"),
"kommune.tbl_wettbewerbteam" => array("team_kurzbz","wettbewerb_kurzbz","rang","punkte"),
"kommune.tbl_wettbewerbtyp" => array("wbtyp_kurzbz","bezeichnung","farbe"),
"lehre.tbl_abschlussbeurteilung" => array("abschlussbeurteilung_kurzbz","bezeichnung","bezeichnung_english"),
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note"),
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
"lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung"),
"lehre.tbl_ferien" => array("bezeichnung","studiengang_kz","vondatum","bisdatum"),
"lehre.tbl_lehreinheit" => array("lehreinheit_id","lehrveranstaltung_id","studiensemester_kurzbz","lehrfach_id","lehrform_kurzbz","stundenblockung","wochenrythmus","start_kw","raumtyp","raumtypalternativ","sprache","lehre","anmerkung","unr","lvnr","updateamum","updatevon","insertamum","insertvon","ext_id","lehrfach_id_old"),
"lehre.tbl_lehreinheitgruppe" => array("lehreinheitgruppe_id","lehreinheit_id","studiengang_kz","semester","verband","gruppe","gruppe_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_lehreinheitmitarbeiter" => array("lehreinheit_id","mitarbeiter_uid","lehrfunktion_kurzbz","semesterstunden","planstunden","stundensatz","faktor","anmerkung","bismelden","updateamum","updatevon","insertamum","insertvon","ext_id","standort_id","vertrag_id"),
"lehre.tbl_lehrfach" => array("lehrfach_id","studiengang_kz","fachbereich_kurzbz","kurzbz","bezeichnung","farbe","aktiv","semester","sprache","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_lehrform" => array("lehrform_kurzbz","bezeichnung","verplanen","bezeichnung_kurz","bezeichnung_lang"),
"lehre.tbl_lehrfunktion" => array("lehrfunktion_kurzbz","beschreibung","standardfaktor","sort"),
"lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"),
"lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"),
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las"),
"lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"),
"lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_lvregeltyp" => array("lvregeltyp_kurzbz","bezeichnung"),
"lehre.tbl_moodle" => array("lehrveranstaltung_id","lehreinheit_id","moodle_id","mdl_course_id","studiensemester_kurzbz","gruppen","insertamum","insertvon","moodle_version"),
"lehre.tbl_moodle_version" => array("moodle_version","bezeichnung","pfad"),
"lehre.tbl_notenschluessel" => array("notenschluessel_kurzbz","bezeichnung"),
"lehre.tbl_notenschluesselaufteilung" => array("notenschluesselaufteilung_id","notenschluessel_kurzbz","note","punkte"),
"lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache"),
"lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"),
"lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung"),
"lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"),
"lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss"),
"lehre.tbl_studienordnung" => array("studienordnung_id","studiengang_kz","version","gueltigvon","gueltigbis","bezeichnung","ects","studiengangbezeichnung","studiengangbezeichnung_englisch","studiengangkurzbzlang","akadgrad_id","insertamum","insertvon","updateamum","updatevon","ext_id"),
"lehre.tbl_studienordnung_semester" => array("studienordnung_semester_id","studienordnung_id","studiensemester_kurzbz","semester"),
"lehre.tbl_studienplan" => array("studienplan_id","studienordnung_id","orgform_kurzbz","version","regelstudiendauer","sprache","aktiv","bezeichnung","insertamum","insertvon","updateamum","updatevon","semesterwochen","testtool_sprachwahl","ext_id"),
"lehre.tbl_studienplan_lehrveranstaltung" => array("studienplan_lehrveranstaltung_id","studienplan_id","lehrveranstaltung_id","semester","studienplan_lehrveranstaltung_id_parent","pflicht","koordinator","insertamum","insertvon","updateamum","updatevon","sort","ext_id"),
"lehre.tbl_studienplatz" => array("studienplatz_id","studiengang_kz","studiensemester_kurzbz","orgform_kurzbz","ausbildungssemester","gpz","npz","insertamum","insertvon","updateamum","updatevon","ext_id"),
"lehre.tbl_stunde" => array("stunde","beginn","ende"),
"lehre.tbl_stundenplan" => array("stundenplan_id","unr","mitarbeiter_uid","datum","stunde","ort_kurzbz","gruppe_kurzbz","titel","anmerkung","lehreinheit_id","studiengang_kz","semester","verband","gruppe","fix","updateamum","updatevon","insertamum","insertvon"),
"lehre.tbl_stundenplandev" => array("stundenplandev_id","lehreinheit_id","unr","studiengang_kz","semester","verband","gruppe","gruppe_kurzbz","mitarbeiter_uid","ort_kurzbz","datum","stunde","titel","anmerkung","fix","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_stundenplan_betriebsmittel" => array("stundenplan_betriebsmittel_id","betriebsmittel_id","stundenplandev_id","anmerkung","insertamum","insertvon"),
"lehre.tbl_vertrag" => array("vertrag_id","person_id","vertragstyp_kurzbz","bezeichnung","betrag","insertamum","insertvon","updateamum","updatevon","ext_id","anmerkung","vertragsdatum","lehrveranstaltung_id"),
"lehre.tbl_vertrag_vertragsstatus" => array("vertragsstatus_kurzbz","vertrag_id","uid","datum","ext_id","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_vertragstyp" => array("vertragstyp_kurzbz","bezeichnung"),
"lehre.tbl_vertragsstatus" => array("vertragsstatus_kurzbz","bezeichnung"),
"lehre.tbl_zeitfenster" => array("wochentag","stunde","ort_kurzbz","studiengang_kz","gewicht"),
"lehre.tbl_zeugnis" => array("zeugnis_id","student_uid","zeugnis","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"),
"public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern"),
"public.tbl_ampel" => array("ampel_id","kurzbz","beschreibung","benutzer_select","deadline","vorlaufzeit","verfallszeit","insertamum","insertvon","updateamum","updatevon","email"),
"public.tbl_ampel_benutzer_bestaetigt" => array("ampel_benutzer_bestaetigt_id","ampel_id","uid","insertamum","insertvon"),
"public.tbl_aufmerksamdurch" => array("aufmerksamdurch_kurzbz","beschreibung","ext_id","bezeichnung", "aktiv"),
"public.tbl_aufnahmeschluessel" => array("aufnahmeschluessel"),
"public.tbl_aufnahmetermin" => array("aufnahmetermin_id","aufnahmetermintyp_kurzbz","prestudent_id","termin","teilgenommen","bewertung","protokoll","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_aufnahmetermintyp" => array("aufnahmetermintyp_kurzbz","bezeichnung"),
"public.tbl_bankverbindung" => array("bankverbindung_id","person_id","name","anschrift","bic","blz","iban","kontonr","typ","verrechnung","updateamum","updatevon","insertamum","insertvon","ext_id","oe_kurzbz"),
"public.tbl_benutzer" => array("uid","person_id","aktiv","alias","insertamum","insertvon","updateamum","updatevon","ext_id","updateaktivvon","updateaktivam","aktivierungscode"),
"public.tbl_benutzerfunktion" => array("benutzerfunktion_id","fachbereich_kurzbz","uid","oe_kurzbz","funktion_kurzbz","semester", "datum_von","datum_bis", "updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung","wochenstunden"),
"public.tbl_benutzergruppe" => array("uid","gruppe_kurzbz","studiensemester_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_buchungstyp" => array("buchungstyp_kurzbz","beschreibung","standardbetrag","standardtext","aktiv","credit_points"),
"public.tbl_dokument" => array("dokument_kurzbz","bezeichnung","ext_id","bezeichnung_mehrsprachig","dokumentbeschreibung_mehrsprachig"),
"public.tbl_dokumentprestudent" => array("dokument_kurzbz","prestudent_id","mitarbeiter_uid","datum","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_dokumentstudiengang" => array("dokument_kurzbz","studiengang_kz","ext_id", "onlinebewerbung", "pflicht","beschreibung_mehrsprachig"),
"public.tbl_erhalter" => array("erhalter_kz","kurzbz","bezeichnung","dvr","logo","zvr"),
"public.tbl_fachbereich" => array("fachbereich_kurzbz","bezeichnung","farbe","studiengang_kz","aktiv","ext_id","oe_kurzbz"),
"public.tbl_filter" => array("filter_id","kurzbz","sql","valuename","showvalue","insertamum","insertvon","updateamum","updatevon","type","htmlattr"),
"public.tbl_firma" => array("firma_id","name","anmerkung","firmentyp_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id","schule","finanzamt","steuernummer","gesperrt","aktiv"),
"public.tbl_firma_mobilitaetsprogramm" => array("firma_id","mobilitaetsprogramm_code","ext_id"),
"public.tbl_firma_organisationseinheit" => array("firma_organisationseinheit_id","firma_id","oe_kurzbz","bezeichnung","kundennummer","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_firmentyp" => array("firmentyp_kurzbz","beschreibung"),
"public.tbl_firmatag" => array("firma_id","tag","insertamum","insertvon"),
"public.tbl_fotostatus" => array("fotostatus_kurzbz","beschreibung"),
"public.tbl_funktion" => array("funktion_kurzbz","beschreibung","aktiv","fachbereich","semester"),
"public.tbl_geschaeftsjahr" => array("geschaeftsjahr_kurzbz","start","ende","bezeichnung"),
"public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible","gesperrt","zutrittssystem"),
"public.tbl_kontakt" => array("kontakt_id","person_id","kontakttyp","anmerkung","kontakt","zustellung","updateamum","updatevon","insertamum","insertvon","ext_id","standort_id"),
"public.tbl_kontaktmedium" => array("kontaktmedium_kurzbz","beschreibung"),
"public.tbl_kontakttyp" => array("kontakttyp","beschreibung"),
"public.tbl_konto" => array("buchungsnr","person_id","studiengang_kz","studiensemester_kurzbz","buchungstyp_kurzbz","buchungsnr_verweis","betrag","buchungsdatum","buchungstext","mahnspanne","updateamum","updatevon","insertamum","insertvon","ext_id","credit_points", "zahlungsreferenz"),
"public.tbl_lehrverband" => array("studiengang_kz","semester","verband","gruppe","aktiv","bezeichnung","ext_id","orgform_kurzbz","gid"),
"public.tbl_log" => array("log_id","executetime","mitarbeiter_uid","beschreibung","sql","sqlundo"),
"public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker"),
"public.tbl_notiz" => array("notiz_id","titel","text","verfasser_uid","bearbeiter_uid","start","ende","erledigt","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_notizzuordnung" => array("notizzuordnung_id","notiz_id","projekt_kurzbz","projektphase_id","projekttask_id","uid","person_id","prestudent_id","bestellung_id","lehreinheit_id","ext_id","anrechnung_id"),
"public.tbl_notiz_dokument" => array("notiz_id","dms_id"),
"public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"),
"public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"),
"public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre","standort","warn_semesterstunden_frei","warn_semesterstunden_fix","standort_id"),
"public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"),
"public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr"),
"public.tbl_person_fotostatus" => array("person_fotostatus_id","person_id","fotostatus_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_personfunktionstandort" => array("personfunktionstandort_id","funktion_kurzbz","person_id","standort_id","position","anrede"),
"public.tbl_preincoming" => array("preincoming_id","person_id","mobilitaetsprogramm_code","zweck_code","firma_id","universitaet","aktiv","bachelorthesis","masterthesis","von","bis","uebernommen","insertamum","insertvon","updateamum","updatevon","anmerkung","zgv","zgv_ort","zgv_datum","zgv_name","zgvmaster","zgvmaster_datum","zgvmaster_ort","zgvmaster_name","program_name","bachelor","master","jahre","person_id_emergency","person_id_coordinator_dep","person_id_coordinator_int","code","deutschkurs1","deutschkurs2","research_area","deutschkurs3","ext_id"),
"public.tbl_preincoming_lehrveranstaltung" => array("preincoming_id","lehrveranstaltung_id","insertamum","insertvon"),
"public.tbl_preinteressent" => array("preinteressent_id","person_id","studiensemester_kurzbz","firma_id","erfassungsdatum","einverstaendnis","absagedatum","anmerkung","maturajahr","infozusendung","aufmerksamdurch_kurzbz","kontaktmedium_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id"),
"public.tbl_preinteressentstudiengang" => array("studiengang_kz","preinteressent_id","freigabedatum","uebernahmedatum","prioritaet","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_preoutgoing" => array("preoutgoing_id","uid","dauer_von","dauer_bis","ansprechperson","bachelorarbeit","masterarbeit","betreuer","sprachkurs","intensivsprachkurs","sprachkurs_von","sprachkurs_bis","praktikum","praktikum_von","praktikum_bis","behinderungszuschuss","studienbeihilfe","anmerkung_student", "anmerkung_admin", "studienrichtung_gastuniversitaet", "insertamum","insertvon","updateamum","updatevon","projektarbeittitel","ext_id"),
"public.tbl_preoutgoing_firma" => array("preoutgoing_firma_id","preoutgoing_id","mobilitaetsprogramm_code","firma_id","name","auswahl","ext_id"),
"public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"),
"public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation"),
"public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz"),
"public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id"),
"public.tbl_sprache" => array("sprache","locale","flagge","index","content","bezeichnung"),
"public.tbl_standort" => array("standort_id","adresse_id","kurzbz","bezeichnung","insertvon","insertamum","updatevon","updateamum","ext_id", "firma_id","code"),
"public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","r","gruppe","sql","php","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz","publish","preferences"),
"public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung"),
"public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung"),
"public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"),
"public.tbl_tag" => array("tag"),
"public.tbl_variable" => array("name","uid","wert"),
"public.tbl_vorlage" => array("vorlage_kurzbz","bezeichnung","anmerkung","mimetype"),
"public.tbl_vorlagestudiengang" => array("vorlagestudiengang_id","vorlage_kurzbz","studiengang_kz","version","text","oe_kurzbz","style","berechtigung","anmerkung_vorlagestudiengang","aktiv"),
"testtool.tbl_ablauf" => array("ablauf_id","gebiet_id","studiengang_kz","reihung","gewicht","semester", "insertamum","insertvon","updateamum", "updatevon","ablauf_vorgaben_id"),
"testtool.tbl_ablauf_vorgaben" => array("ablauf_vorgaben_id","studiengang_kz","sprache","sprachwahl","content_id","insertamum","insertvon","updateamum", "updatevon"),
"testtool.tbl_antwort" => array("antwort_id","pruefling_id","vorschlag_id"),
"testtool.tbl_frage" => array("frage_id","kategorie_kurzbz","gebiet_id","level","nummer","demo","insertamum","insertvon","updateamum","updatevon"),
"testtool.tbl_gebiet" => array("gebiet_id","kurzbz","bezeichnung","beschreibung","zeit","multipleresponse","kategorien","maxfragen","zufallfrage","zufallvorschlag","levelgleichverteilung","maxpunkte","insertamum", "insertvon", "updateamum", "updatevon", "level_start","level_sprung_auf","level_sprung_ab","antwortenprozeile"),
"testtool.tbl_kategorie" => array("kategorie_kurzbz","gebiet_id"),
"testtool.tbl_kriterien" => array("gebiet_id","kategorie_kurzbz","punkte","typ"),
"testtool.tbl_pruefling" => array("pruefling_id","prestudent_id","studiengang_kz","idnachweis","registriert","semester"),
"testtool.tbl_vorschlag" => array("vorschlag_id","frage_id","nummer","punkte","insertamum","insertvon","updateamum","updatevon"),
"testtool.tbl_pruefling_frage" => array("prueflingfrage_id","pruefling_id","frage_id","nummer","begintime","endtime"),
"testtool.tbl_frage_sprache" => array("frage_id","sprache","text","bild","audio","insertamum","insertvon","updateamum","updatevon"),
"testtool.tbl_vorschlag_sprache" => array("vorschlag_id","sprache","text","bild","audio","insertamum","insertvon","updateamum","updatevon"),
"system.tbl_appdaten" => array("appdaten_id","uid","app","appversion","version","bezeichnung","daten","freigabe","insertamum","insertvon","updateamum","updatevon"),
"system.tbl_cronjob" => array("cronjob_id","server_kurzbz","titel","beschreibung","file","last_execute","aktiv","running","jahr","monat","tag","wochentag","stunde","minute","standalone","reihenfolge","updateamum", "updatevon","insertamum","insertvon","variablen"),
"system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"),
"system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"),
"system.tbl_rolle" => array("rolle_kurzbz","beschreibung"),
"system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art"),
"system.tbl_webservicelog" => array("webservicelog_id","webservicetyp_kurzbz","request_id","beschreibung","request_data","execute_time","execute_user"),
"system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"),
"system.tbl_webservicetyp" => array("webservicetyp_kurzbz","beschreibung"),
"system.tbl_server" => array("server_kurzbz","beschreibung"),
"wawi.tbl_betriebsmittelperson" => array("betriebsmittelperson_id","betriebsmittel_id","person_id", "anmerkung", "kaution", "ausgegebenam", "retouram","insertamum", "insertvon","updateamum", "updatevon","ext_id","uid"),
"wawi.tbl_betriebsmittel" => array("betriebsmittel_id","betriebsmitteltyp","oe_kurzbz", "ort_kurzbz", "beschreibung", "nummer", "hersteller","seriennummer", "bestellung_id","bestelldetail_id", "afa","verwendung","anmerkung","reservieren","updateamum","updatevon","insertamum","insertvon","ext_id","inventarnummer","leasing_bis","inventuramum","inventurvon","anschaffungsdatum","anschaffungswert","hoehe","breite","tiefe","nummer2","verplanen"),
"wawi.tbl_betriebsmittel_betriebsmittelstatus" => array("betriebsmittelbetriebsmittelstatus_id","betriebsmittel_id","betriebsmittelstatus_kurzbz", "datum", "updateamum", "updatevon", "insertamum", "insertvon","anmerkung"),
"wawi.tbl_betriebsmittelstatus" => array("betriebsmittelstatus_kurzbz","beschreibung"),
"wawi.tbl_betriebsmitteltyp" => array("betriebsmitteltyp","beschreibung","anzahl","kaution","typ_code","mastershapename"),
"wawi.tbl_budget" => array("geschaeftsjahr_kurzbz","kostenstelle_id","budget"),
"wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung"),
"wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id"),
"wawi.tbl_konto_kostenstelle" => array("konto_id","kostenstelle_id","insertamum","insertvon"),
"wawi.tbl_kostenstelle" => array("kostenstelle_id","oe_kurzbz","bezeichnung","kurzbz","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","kostenstelle_nr","deaktiviertvon","deaktiviertamum"),
"wawi.tbl_bestellungtag" => array("tag","bestellung_id","insertamum","insertvon"),
"wawi.tbl_bestelldetailtag" => array("tag","bestelldetail_id","insertamum","insertvon"),
"wawi.tbl_projekt_bestellung" => array("projekt_kurzbz","bestellung_id","anteil"),
"wawi.tbl_bestellung" => array("bestellung_id","besteller_uid","kostenstelle_id","konto_id","firma_id","lieferadresse","rechnungsadresse","freigegeben","bestell_nr","titel","bemerkung","liefertermin","updateamum","updatevon","insertamum","insertvon","ext_id","zahlungstyp_kurzbz"),
"wawi.tbl_bestelldetail" => array("bestelldetail_id","bestellung_id","position","menge","verpackungseinheit","beschreibung","artikelnummer","preisprove","mwst","erhalten","sort","text","updateamum","updatevon","insertamum","insertvon"),
"wawi.tbl_bestellung_bestellstatus" => array("bestellung_bestellstatus_id","bestellung_id","bestellstatus_kurzbz","uid","oe_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"wawi.tbl_bestellstatus" => array("bestellstatus_kurzbz","beschreibung"),
"wawi.tbl_buchung" => array("buchung_id","konto_id","kostenstelle_id","buchungstyp_kurzbz","buchungsdatum","buchungstext","betrag","insertamum","insertvon","updateamum","updatevon","ext_id"),
"wawi.tbl_buchungstyp" => array("buchungstyp_kurzbz","bezeichnung"),
"wawi.tbl_rechnungstyp" => array("rechnungstyp_kurzbz","beschreibung","berechtigung_kurzbz"),
"wawi.tbl_rechnung" => array("rechnung_id","bestellung_id","buchungsdatum","rechnungsnr","rechnungsdatum","transfer_datum","buchungstext","insertamum","insertvon","updateamum","updatevon","rechnungstyp_kurzbz","freigegeben","freigegebenvon","freigegebenamum"),
"wawi.tbl_rechnungsbetrag" => array("rechnungsbetrag_id","rechnung_id","mwst","betrag","bezeichnung","ext_id"),
"wawi.tbl_aufteilung" => array("aufteilung_id","bestellung_id","oe_kurzbz","anteil","insertamum","insertvon","updateamum","updatevon"),
"wawi.tbl_aufteilung_default" => array("aufteilung_id","kostenstelle_id","oe_kurzbz","anteil","insertamum","insertvon","updateamum","updatevon"),
);
$tabs=array_keys($tabellen);
//print_r($tabs);
$i=0;
foreach ($tabellen AS $attribute)
{
$sql_attr='';
foreach($attribute AS $attr)
$sql_attr.=$attr.',';
$sql_attr=substr($sql_attr, 0, -1);
if (!@$db->db_query('SELECT '.$sql_attr.' FROM '.$tabs[$i].' LIMIT 1;'))
echo '<BR><strong>'.$tabs[$i].': '.$db->db_last_error().' </strong><BR>';
else
echo $tabs[$i].': OK - ';
flush();
$i++;
}
echo '<H2>Gegenpruefung!</H2>';
$error=false;
$sql_query="SELECT schemaname,tablename FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' AND schemaname != 'sync' AND schemaname != 'addon';";
if (!$result=@$db->db_query($sql_query))
echo '<BR><strong>'.$db->db_last_error().' </strong><BR>';
else
while ($row=$db->db_fetch_object($result))
{
$fulltablename=$row->schemaname.'.'.$row->tablename;
if (!isset($tabellen[$fulltablename]))
{
echo 'Tabelle '.$fulltablename.' existiert in der DB, aber nicht in diesem Skript!<BR>';
$error=true;
}
else
if (!$result_fields=@$db->db_query("SELECT * FROM $fulltablename LIMIT 1;"))
echo '<BR><strong>'.$db->db_last_error().' </strong><BR>';
else
for ($i=0; $i<$db->db_num_fields($result_fields); $i++)
{
$found=false;
$fieldnameDB=$db->db_field_name($result_fields,$i);
foreach ($tabellen[$fulltablename] AS $fieldnameARRAY)
if ($fieldnameDB==$fieldnameARRAY)
{
$found=true;
break;
}
if (!$found)
{
echo 'Attribut '.$fulltablename.'.<strong>'.$fieldnameDB.'</strong> existiert in der DB, aber nicht in diesem Skript!<BR>';
$error=true;
}
}
}
if($error==false)
echo '<br>Gegenpruefung fehlerfrei';
?>
+41 -2
View File
@@ -417,10 +417,10 @@ $error_msg='';
tbl_studiengang.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz AND
(studiensemester_kurzbz='$studiensemester' OR
studiensemester_kurzbz='$stsem2') AND
mitarbeiter_uid NOT LIKE '\\\\_%' AND tbl_studiengang.studiengang_kz!=0 AND
mitarbeiter_uid NOT LIKE '\\_%' AND tbl_studiengang.studiengang_kz!=0 AND
(mitarbeiter_uid,UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt')) NOT IN
(SELECT uid, UPPER(gruppe_kurzbz) FROM public.tbl_benutzergruppe
WHERE gruppe_kurzbz LIKE '%\\\\_LKT' AND UPPER(gruppe_kurzbz)!=UPPER('tw_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_fix_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_ext_lkt'))";
WHERE gruppe_kurzbz LIKE '%\\_LKT' AND UPPER(gruppe_kurzbz)!=UPPER('tw_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_fix_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_ext_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('moodle_lkt'))";
//echo $sql_query;
if(!($result=$db->db_query($sql_query)))
$error_msg.=$db->db_last_error().$sql_query;
@@ -1323,6 +1323,45 @@ WHERE
}
}
// **************************************************************
//Akademisches Managementteam
$mlist_name='TW_MANAGEMENTTEAM';
$grp = new gruppe();
setGeneriert($mlist_name);
// Personen holen die nicht mehr in den Verteiler gehoeren
echo '<br>'.$mlist_name.' wird abgeglichen!';
flush();
$sql_query = "SELECT distinct uid
FROM
public.tbl_benutzer
JOIN public.tbl_benutzerfunktion USING(uid)
WHERE funktion_kurzbz='managementteam'
AND tbl_benutzer.aktiv
AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
$sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
if(!$db->db_query($sql_querys))
{
$error_msg.=$db->db_last_error().' '.$sql_querys;
}
$sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
if(!($result_oe = $db->db_query($sql_query)))
$error_msg.=$db->db_last_error().' '.$sql_query;
// Personen holen die nicht im Verteiler sind
while($row_oe = $db->db_fetch_object($result_oe))
{
$sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
if(!$db->db_query($sql_query))
{
$error_msg.=$db->db_last_error().$sql_query;
}
}
// **************************************************************
// FUE Mitarbeiter
$mlist_name='TW_FUE';
+491 -491
View File
@@ -1,491 +1,491 @@
Version 1.4.4
-------------
* Bug
* filebox: The 'clear' and 'reset' methods do not work properly in IE9. fixed.
* messager: After calling $.messager.progress() with no arguments, the $.messager.progress('close') does not work properly. fixed.
* timespinner: The value does not display properly in IE8 while clicking the spin buttons. fixed.
* window: The window does not display when calling 'options' method in 'onMove' event. fixed.
* treegrid: The 'getLevel' method does not accept the parameter value of 0. fixed.
* Improvement
* layout: The 'collapsedContent','expandMode' and 'hideExpandTool' properties are supported in region panel.
* layout: The 'hideCollapsedContent' property can be set to display the vertical title bar on collapsed panel.
* layout: Add 'onCollapse','onExpand','onAdd','onRemove' events.
* datagrid: Display the 'up-down' icon on the sortable columns.
* datagrid: Add 'gotoPage' method.
* propertygrid: Add 'groups' method that allows to get all the data groups.
* messager: Auto scroll feature is supported when displaying long messages.
* tabs: The 'disabled' property is supported when defining a disabled tab panel.
* tabs: The percentange size is supported now.
Version 1.4.3
-------------
* Bug
* textbox: The 'setText' method does not accept value 0. fixed.
* timespinner: When running in IE11, the error occurs when clicking on the empty textbox. fixed.
* tabs: The 'update' method can not update only the panel body. fixed.
* Improvement
* combobox: Improve the performance of displaying the drop-down panel.
* combogrid: Remember the displaying text when the drop-down datagrid go to other pages.
* combogrid: The 'setValue' and 'setValues' methods accept a key-value object.
* window: The inline window's mask can auto-stretch its size to fill parent container.
* tabs: The 'showTool' and 'hideTool' methods are available for users to show or hide the tools.
* layout: Allow the user to override the 'cls','headerCls' and 'bodyCls' property values.
* New Plugins
* switchbutton: The switch button with two states:'on' and 'off'.
Version 1.4.2
-------------
* Bug
* treegrid: The column will restore its size to original size after recreating the treegrid. fixed.
* Improvement
* draggable: Add 'delay' property that allows the user to delay the drag operation.
* tree: Add 'filter' property and 'doFilter' method.
* tabs: The 'add' method allows the user to insert a tab panel at a specified index.
* tabs: The user can determine what tab panel can be selected.
* tabs: Add 'justified' and 'narrow' properties.
* layout: Add 'unsplit' and 'split' methods.
* messager: Keyboard navigation features are supported now.
* form: Add 'onChange' event.
* combobox: Add 'queryParams' property.
* slider: Add 'range' property.
* menu: Add 'itemHeight','inline','noline' properties.
* panel: The 'header' property allows the user to customize the panel header.
* menubutton: Add 'hasDownArrow' property.
* New Plugins
* datalist: The plugin to render items in a list.
* navpanel: The root component for the mobile page.
* mobile: The plugin to provide the mobile page stack management and navigation.
Version 1.4.1
-------------
* Bug
* combogrid: The combogrid has different height than other combo components. fixed.
* datagrid: The row element loses some class style value after calling 'updateRow' method. fixed.
* menubutton: Calling 'enable' method on a disabled button can not work well. fixed.
* form: The filebox components in the form do not work correctly after calling 'clear' method. fixed.
* Improvement
* tabs: The 'update' method accepts 'type' option that allows the user to update the header,body,or both.
* panel: Add 'openAnimation','openDuration','closeAnimation' and 'closeDuration' properties to set the animation for opening or closing a panel.
* panel: Add 'footer' property that allows the user to add a footer bar to the bottom of panel.
* datagrid: Calling 'endEdit' method will accept the editing value correctly.
* datagrid: Add 'onBeforeSelect','onBeforeCheck','onBeforeUnselect','onBeforeUncheck' events.
* propertygrid: The user can edit a row by calling 'beginEdit' method.
* datebox: Add 'cloneFrom' method to create the datebox component quickly.
* datetimebox: Add 'cloneFrom' method to create the datetimebox component quickly.
Version 1.4
-------------
* Bug
* menu: The menu should not has a correct height when removed a menu item. fixed.
* datagrid: The 'fitColumns' method does not work normally when the datarid width is too small. fixed.
* Improvement
* The fluid/percentange size is supported now for all easyui components.
* menu: Add 'showItem', 'hideItem' and 'resize' methods.
* menu: Auto resize the height upon the window size.
* menu: Add 'duration' property that allows the user to define duration time in milliseconds to hide menu.
* validatebox: Add 'onBeforeValidate' and 'onValidate' events.
* combo: Extended from textbox now.
* combo: Add 'panelMinWidth','panelMaxWidth','panelMinHeight' and 'panelMaxHeight' properties.
* searchbox: Extended from textbox now.
* tree: The 'getRoot' method will return the top parent node of a specified node if pass a 'nodeEl' parameter.
* tree: Add 'queryParams' property.
* datetimebox: Add 'spinnerWidth' property.
* panel: Add 'doLayout' method to cause the panel to lay out its components.
* panel: Add 'clear' method to clear the panel's content.
* datagrid: The user is allowed to assign percent width to columns.
* form: Add 'ajax','novalidate' and 'queryParams' properties.
* linkbutton: Add 'resize' method.
* New Plugins
* textbox: A enhanced input field that allows users build their form easily.
* datetimespinner: A date and time spinner that allows to pick a specific day.
* filebox: The filebox component represents a file field of the forms.
Version 1.3.6
-------------
* Bug
* treegrid: The 'getChecked' method can not return correct checked rows. fixed.
* tree: The checkbox does not display properly on async tree when 'onlyLeafCheck' property is true. fixed.
* Improvement
* treegrid: All the selecting and checking methods are extended from datagrid component.
* linkbutton: The icon alignment is fully supported, possible values are: 'top','bottom','left','right'.
* linkbutton: Add 'size' property, possible values are: 'small','large'.
* linkbutton: Add 'onClick' event.
* menubutton: Add 'menuAlign' property that allows the user set top level menu alignment.
* combo: Add 'panelAlign' property, possible values are: 'left','right'.
* calendar: The 'formatter','styler' and 'validator' options are available to custom the calendar dates.
* calendar: Add 'onChange' event.
* panel: Add 'method','queryParams' and 'loader' options.
* panel: Add 'onLoadError' event.
* datagrid: Add 'onBeginEdit' event that fires when a row goes into edit mode.
* datagrid: Add 'onEndEdit' event that fires when finishing editing but before destroying editors.
* datagrid: Add 'sort' method and 'onBeforeSortColumn' event.
* datagrid: The 'combogrid' editor has been integrated into datagrid.
* datagrid: Add 'ctrlSelect' property that only allows multi-selection when ctrl+click is used.
* slider: Add 'converter' option that allows users determine how to convert a value to the slider position or the slider position to the value.
* searchbox: Add 'disabled' property.
* searchbox: Add 'disable','enable','clear','reset' methods.
* spinner: Add 'readonly' property, 'readonly' method and 'onChange' event.
Version 1.3.5
-------------
* Bug
* searchbox: The 'searcher' function can not offer 'name' parameter value correctly. fixed.
* combo: The 'isValid' method can not return boolean value. fixed.
* combo: Clicking combo will trigger the 'onHidePanel' event of other combo components that have hidden drop-down panels. fixed.
* combogrid: Some methods can not inherit from combo. fixed.
* Improvement
* datagrid: Improve performance on checking rows.
* menu: Allows to append a menu separator.
* menu: Add 'hideOnUnhover' property to indicate if the menu should be hidden when mouse exits it.
* slider: Add 'clear' and 'reset' methods.
* tabs: Add 'unselect' method that will trigger 'onUnselect' event.
* tabs: Add 'selected' property to specify what tab panel will be opened.
* tabs: The 'collapsible' property of tab panel is supported to determine if the tab panel can be collapsed.
* tabs: Add 'showHeader' property, 'showHeader' and 'hideHeader' methods.
* combobox: The 'disabled' property can be used to disable some items.
* tree: Improve loading performance.
* pagination: The 'layout' property can be used to customize the pagination layout.
* accordion: Add 'unselect' method that will trigger 'onUnselect' event.
* accordion: Add 'selected' and 'multiple' properties.
* accordion: Add 'getSelections' method.
* datebox: Add 'sharedCalendar' property that allows multiple datebox components share one calendar component.
Version 1.3.4
-------------
* Bug
* combobox: The onLoadSuccess event fires when parsing empty local data. fixed.
* form: Calling 'reset' method can not reset datebox field. fixed.
* Improvement
* mobile: The context menu and double click features are supported on mobile devices.
* combobox: The 'groupField' and 'groupFormatter' options are available to display items in groups.
* tree: When append or insert nodes, the 'data' parameter accepts one or more nodes data.
* tree: The 'getChecked' method accepts a single 'state' or an array of 'state'.
* tree: Add 'scrollTo' method.
* datagrid: The 'multiSort' property is added to support multiple column sorting.
* datagrid: The 'rowStyler' and column 'styler' can return CSS class name or inline styles.
* treegrid: Add 'load' method to load data and navigate to the first page.
* tabs: Add 'tabWidth' and 'tabHeight' properties.
* validatebox: The 'novalidate' property is available to indicate whether to perform the validation.
* validatebox: Add 'enableValidation' and 'disableValidation' methods.
* form: Add 'enableValidation' and 'disableValidation' methods.
* slider: Add 'onComplete' event.
* pagination: The 'buttons' property accepts the existing element.
Version 1.3.3
-------------
* Bug
* datagrid: Some style features are not supported by column styler function. fixed.
* datagrid: IE 31 stylesheet limit. fixed.
* treegrid: Some style features are not supported by column styler function. fixed.
* menu: The auto width of menu item displays incorrect in ie6. fixed.
* combo: The 'onHidePanel' event can not fire when clicked outside the combo area. fixed.
* Improvement
* datagrid: Add 'scrollTo' and 'highlightRow' methods.
* treegrid: Enable treegrid to parse data from <tbody> element.
* combo: Add 'selectOnNavigation' and 'readonly' options.
* combobox: Add 'loadFilter' option to allow users to change data format before loading into combobox.
* tree: Add 'onBeforeDrop' callback event.
* validatebox: Dependent on tooltip plugin now, add 'deltaX' property.
* numberbox: The 'filter' options can be used to determine if the key pressed was accepted.
* linkbutton: The group button is available.
* layout: The 'minWidth','maxWidth','minHeight','maxHeight' and 'collapsible' properties are available for region panel.
* New Plugins
* tooltip: Display a popup message when moving mouse over an element.
Version 1.3.2
-------------
* Bug
* datagrid: The loading message window can not be centered when changing the width of datagrid. fixed.
* treegrid: The 'mergeCells' method can not work normally. fixed.
* propertygrid: Calling 'endEdit' method to stop editing a row will cause errors. fixed.
* tree: Can not load empty data when 'lines' property set to true. fixed.
* Improvement
* RTL feature is supported now.
* tabs: Add 'scrollBy' method to scroll the tab header by the specified amount of pixels
* tabs: Add 'toolPosition' property to set tab tools to left or right.
* tabs: Add 'tabPosition' property to define the tab position, possible values are: 'top','bottom','left','right'.
* datagrid: Add a column level property 'order' that allows users to define different default sort order per column.
* datagrid: Add a column level property 'halign' that allows users to define how to align the column header.
* datagrid: Add 'resizeHandle' property to define the resizing column position, by grabbing the left or right edge of the column.
* datagrid: Add 'freezeRow' method to freeze some rows that will always be displayed at the top when the datagrid is scrolled down.
* datagrid: Add 'clearChecked' method to clear all checked records.
* datagrid: Add 'data' property to initialize the datagrid data.
* linkbutton: Add 'iconAlgin' property to define the icon position, supported values are: 'left','right'.
* menu: Add 'minWidth' property.
* menu: The menu width can be automatically calculated.
* tree: New events are available including 'onBeforeDrag','onStartDrag','onDragEnter','onDragOver','onDragLeave',etc.
* combo: Add 'height' property to allow users to define the height of combo.
* combo: Add 'reset' method.
* numberbox: Add 'reset' method.
* spinner: Add 'reset' method.
* spinner: Add 'height' property to allow users to define the height of spinner.
* searchbox: Add 'height' property to allow users to define the height of searchbox.
* form: Add 'reset' method.
* validatebox: Add 'delay' property to delay validating from the last inputting value.
* validatebox: Add 'tipPosition' property to define the tip position, supported values are: 'left','right'.
* validatebox: Multiple validate rules on a field is supported now.
* slider: Add 'reversed' property to determine if the min value and max value will switch their positions.
* progressbar: Add 'height' property to allow users to define the height of progressbar.
Version 1.3.1
-------------
* Bug
* datagrid: Setting the 'pageNumber' property is not valid. fixed.
* datagrid: The id attribute of rows isn't adjusted properly while calling 'insertRow' or 'deleteRow' method.
* dialog: When load content from 'href', the script will run twice. fixed.
* propertygrid: The editors that extended from combo can not accept its changed value. fixed.
* Improvement
* droppable: Add 'disabled' property.
* droppable: Add 'options','enable' and 'disable' methods.
* tabs: The tab panel tools can be changed by calling 'update' method.
* messager: When show a message window, the user can define the window position by applying 'style' property.
* window: Prevent script on window body from running twice.
* window: Add 'hcenter','vcenter' and 'center' methods.
* tree: Add 'onBeforeCheck' callback event.
* tree: Extend the 'getChecked' method to allow users to get 'checked','unchecked' or 'indeterminate' nodes.
* treegrid: Add 'update' method to update a specified node.
* treegrid: Add 'insert' method to insert a new node.
* treegrid: Add 'pop' method to remove a node and get the removed node data.
Version 1.3
-----------
* Bug
* combogrid: When set to 'remote' query mode, the 'queryParams' parameters can't be sent to server. fixed.
* combotree: The tree nodes on drop-down panel can not be unchecked while calling 'clear' method. fixed.
* datetimebox: Setting 'showSeconds' property to false cannot hide seconds info. fixed.
* datagrid: Calling 'mergeCells' method can't auto resize the merged cell while header is hidden. fixed.
* dialog: Set cache to false and load data via ajax, the content cannot be refreshed. fixed.
* Improvement
* The HTML5 'data-options' attribute is available for components to declare all custom options, including properties and events.
* More detailed documentation is available.
* panel: Prevent script on panel body from running twice.
* accordion: Add 'getPanelIndex' method.
* accordion: The tools can be added on panel header.
* datetimebox: Add 'timeSeparator' option that allows users to define the time separator.
* pagination: Add 'refresh' and 'select' methods.
* datagrid: Auto resize the column width to fit the contents when the column width is not defined.
* datagrid: Double click on the right border of columns to auto resize the columns to the contents in the columns.
* datagrid: Add 'autoSizeColumn' method that allows users to adjust the column width to fit the contents.
* datagrid: Add 'getChecked' method to get all rows where the checkbox has been checked.
* datagrid: Add 'selectOnCheck' and 'checkOnSelect' properties and some checking methods to enhance the row selections.
* datagrid: Add 'pagePosition' property to allow users to display pager bar at either top,bottom or both places of the grid.
* datagrid: The buffer view and virtual scroll view are supported to display large amounts of records without pagination.
* tabs: Add 'disableTab' and 'enableTab' methods to allow users to disable or enable a tab panel.
Version 1.2.6
-------------
* Bug
* tabs: Call 'add' method with 'selected:false' option, the added tab panel is always selected. fixed.
* treegrid: The 'onSelect' and 'onUnselect' events can't be triggered. fixed.
* treegrid: Cannot display zero value field. fixed.
* Improvement
* propertygrid: Add 'expandGroup' and 'collapseGroup' methods.
* layout: Allow users to create collapsed layout panels by assigning 'collapsed' property to true.
* layout: Add 'add' and 'remove' methods that allow users to dynamically add or remove region panel.
* layout: Additional tool icons can be added on region panel header.
* calendar: Add 'firstDay' option that allow users to set first day of week. Sunday is 0, Monday is 1, ...
* tree: Add 'lines' option, true to display tree lines.
* tree: Add 'loadFilter' option that allow users to change data format before loading into the tree.
* tree: Add 'loader' option that allow users to define how to load data from remote server.
* treegrid: Add 'onClickCell' and 'onDblClickCell' callback function options.
* datagrid: Add 'autoRowHeight' property that allow users to determine if set the row height based on the contents of that row.
* datagrid: Improve performance to load large data set.
* datagrid: Add 'loader' option that allow users to define how to load data from remote server.
* treegrid: Add 'loader' option that allow users to define how to load data from remote server.
* combobox: Add 'onBeforeLoad' callback event function.
* combobox: Add 'loader' option that allow users to define how to load data from remote server.
* Add support for other loading mode such as dwr,xml,etc.
* New Plugins
* slider: Allows the user to choose a numeric value from a finite range.
Version 1.2.5
-------------
* Bug
* tabs: When add a new tab panel with href property, the content page is loaded twice. fixed.
* form: Failed to call 'load' method to load form input with complex name. fixed.
* draggable: End drag in ie9, the cursor cannot be restored. fixed.
* Improvement
* panel: The tools can be defined via html markup.
* tabs: Call 'close' method to close specified tab panel, users can pass tab title or index of tab panel. Other methods such 'select','getTab' and 'exists' are similar to 'close' method.
* tabs: Add 'getTabIndex' method.
* tabs: Users can define mini tools on tabs.
* tree: The mouse must move a specified distance to begin drag and drop operation.
* resizable: Add 'options','enable' and 'disable' methods.
* numberbox: Allow users to change number format.
* datagrid: The subgrid is supported now.
* searchbox: Add 'selectName' method to select searching type name.
Version 1.2.4
-------------
* Bug
* menu: The menu position is wrong when scroll bar appears. fixed.
* accordion: Cannot display the default selected panel in jQuery 1.6.2. fixed.
* tabs: Cannot display the default selected tab panel in jQuery 1.6.2. fixed.
* Improvement
* menu: Allow users to disable or enable menu item.
* combo: Add 'delay' property to set the delay time to do searching from the last key input event.
* treegrid: The 'getEditors' and 'getEditor' methods are supported now.
* treegrid: The 'loadFilter' option is supported now.
* messager: Add 'progress' method to display a message box with a progress bar.
* panel: Add 'extractor' option to allow users to extract panel content from ajax response.
* New Plugins
* searchbox: Allow users to type words into box and do searching operation.
* progressbar: To display the progress of a task.
Version 1.2.3
-------------
* Bug
* window: Cannot resize the window with iframe content. fixed.
* tree: The node will be removed when dragging to its child. fixed.
* combogrid: The onChange event fires multiple times. fixed.
* accordion: Cannot add batch new panels when animate property is set to true. fixed.
* Improvement
* treegrid: The footer row and row styler features are supported now.
* treegrid: Add 'getLevel','reloadFooter','getFooterRows' methods.
* treegrid: Support root nodes pagination and editable features.
* datagrid: Add 'getFooterRows','reloadFooter','insertRow' methods and improve editing performance.
* datagrid: Add 'loadFilter' option that allow users to change original source data to standard data format.
* draggable: Add 'onBeforeDrag' callback event function.
* validatebox: Add 'remote' validation type.
* combobox: Add 'method' option.
* New Plugins
* propertygrid: Allow users to edit property value in datagrid.
Version 1.2.2
-------------
* Bug
* datagrid: Apply fitColumns cannot work fine while set checkbox column. fixed.
* datagrid: The validateRow method cannot return boolean type value. fixed.
* numberbox: Cannot fix value in chrome when min or max property isn't defined. fixed.
* Improvement
* menu: Add some crud methods.
* combo: Add hasDownArrow property to determine whether to display the down arrow button.
* tree: Supports inline editing.
* calendar: Add some useful methods such as 'resize', 'moveTo' etc.
* timespinner: Add some useful methods.
* datebox: Refactoring based on combo and calendar plugin now.
* datagrid: Allow users to change row style in some conditions.
* datagrid: Users can use the footer row to display summary information.
* New Plugins
* datetimebox: Combines datebox with timespinner component.
Version 1.2.1
-------------
* Bug
* easyloader: Some dependencies cannot be loaded by their order. fixed.
* tree: The checkbox is setted incorrectly when removing a node. fixed.
* dialog: The dialog layout incorrectly when 'closed' property is setted to true. fixed.
* Improvement
* parser: Add onComplete callback function that can indicate whether the parse action is complete.
* menu: Add onClick callback function and some other methods.
* tree: Add some useful methods.
* tree: Drag and Drop feature is supported now.
* tree: Add onContextMenu callback function.
* tabs: Add onContextMenu callback function.
* tabs: Add 'tools' property that can create buttons on right bar.
* datagrid: Add onHeaderContextMenu and onRowContextMenu callback functions.
* datagrid: Custom view is supported.
* treegrid: Add onContextMenu callback function and append,remove methods.
Version 1.2
-------------
* Improvement
* tree: Add cascadeCheck,onlyLeafCheck properties and select event.
* combobox: Enable multiple selection.
* combotree: Enable multiple selection.
* tabs: Remember the trace of selection, when current tab panel is closed, the previous selected tab will be selected.
* datagrid: Extend from panel, so many properties defined in panel can be used for datagrid.
* New Plugins
* treegrid: Represent tabular data in hierarchical view, combines tree view and datagrid.
* combo: The basic component that allow user to extend their combo component such as combobox,combotree,etc.
* combogrid: Combines combobox with drop-down datagrid component.
* spinner: The basic plugin to create numberspinner,timespinner,etc.
* numberspinner: The numberbox that allow user to change value by clicking up and down spin buttons.
* timespinner: The time selector that allow user to quickly inc/dec a time.
Version 1.1.2
-------------
* Bug
* messager: When call show method in layout, the message window will be blocked. fixed.
* Improvement
* datagrid: Add validateRow method, remember the current editing row status when do editing action.
* datagrid: Add the ability to create merged cells.
* form: Add callback functions when loading data.
* panel,window,dialog: Add maximize,minimize,restore,collapse,expand methods.
* panel,tabs,accordion: The lazy loading feature is supported.
* tabs: Add getSelected,update,getTab methods.
* accordion: Add crud methods.
* linkbutton: Accept an id option to set the id attribute.
* tree: Enhance tree node operation.
Version 1.1.1
-------------
* Bug
* form: Cannot clear the value of combobox and combotree component. fixed.
* Improvement
* tree: Add some useful methods such as 'getRoot','getChildren','update',etc.
* datagrid: Add editable feature, improve performance while loading data.
* datebox: Add destroy method.
* combobox: Add destroy and clear method.
* combotree: Add destroy and clear method.
Version 1.1
-------------
* Bug
* messager: When call show method with timeout property setted, an error occurs while clicking the close button. fixed.
* combobox: The editable property of combobox plugin is invalid. fixed.
* window: The proxy box will not be removed when dragging or resizing exceed browser border in ie. fixed.
* Improvement
* menu: The menu item can use <a> markup to display a different page.
* tree: The tree node can use <a> markup to act as a tree menu.
* pagination: Add some event on refresh button and page list.
* datagrid: Add a 'param' parameter for reload method, with which users can pass query parameter when reload data.
* numberbox: Add required validation support, the usage is same as validatebox plugin.
* combobox: Add required validation support.
* combotree: Add required validation support.
* layout: Add some method that can get a region panel and attach event handlers.
* New Plugins
* droppable: A droppable plugin that supports drag drop operation.
* calendar: A calendar plugin that can either be embedded within a page or popup.
* datebox: Combines a textbox with a calendar that let users to select date.
* easyloader: A JavaScript loader that allows you to load plugin and their dependencies into your page.
Version 1.0.5
* Bug
* panel: The fit property of panel performs incorrectly. fixed.
* Improvement
* menu: Add a href attribute for menu item, with which user can display a different page in the current browser window.
* form: Add a validate method to do validation for validatebox component.
* dialog: The dialog can read collapsible,minimizable,maximizable and resizable attribute from markup.
* New Plugins
* validatebox: A validation plugin that checks to make sure the user's input value is valid.
Version 1.0.4
-------------
* Bug
* panel: When panel is invisible, it is abnormal when resized. fixed.
* panel: Memory leak in method 'destroy'. fixed.
* messager: Memory leak when messager box is closed. fixed.
* dialog: No onLoad event occurs when loading remote data. fixed.
* Improvement
* panel: Add method 'setTitle'.
* window: Add method 'setTitle'.
* dialog: Add method 'setTitle'.
* combotree: Add method 'getValue'.
* combobox: Add method 'getValue'.
* form: The 'load' method can load data and fill combobox and combotree field correctly.
Version 1.0.3
-------------
* Bug
* menu: When menu is show in a DIV container, it will be cropped. fixed.
* layout: If you collpase a region panel and then expand it immediately, the region panel will not show normally. fixed.
* accordion: If no panel selected then the first one will become selected and the first panel's body height will not set correctly. fixed.
* Improvement
* tree: Add some methods to support CRUD operation.
* datagrid: Toolbar can accept a new property named 'disabled' to disable the specified tool button.
* New Plugins
* combobox: Combines a textbox with a list of options that users are able to choose from.
* combotree: Combines combobox with drop-down tree component.
* numberbox: Make input element can only enter number char.
* dialog: rewrite the dialog plugin, dialog can contains toolbar and buttons.
Version 1.4.4
-------------
* Bug
* filebox: The 'clear' and 'reset' methods do not work properly in IE9. fixed.
* messager: After calling $.messager.progress() with no arguments, the $.messager.progress('close') does not work properly. fixed.
* timespinner: The value does not display properly in IE8 while clicking the spin buttons. fixed.
* window: The window does not display when calling 'options' method in 'onMove' event. fixed.
* treegrid: The 'getLevel' method does not accept the parameter value of 0. fixed.
* Improvement
* layout: The 'collapsedContent','expandMode' and 'hideExpandTool' properties are supported in region panel.
* layout: The 'hideCollapsedContent' property can be set to display the vertical title bar on collapsed panel.
* layout: Add 'onCollapse','onExpand','onAdd','onRemove' events.
* datagrid: Display the 'up-down' icon on the sortable columns.
* datagrid: Add 'gotoPage' method.
* propertygrid: Add 'groups' method that allows to get all the data groups.
* messager: Auto scroll feature is supported when displaying long messages.
* tabs: The 'disabled' property is supported when defining a disabled tab panel.
* tabs: The percentange size is supported now.
Version 1.4.3
-------------
* Bug
* textbox: The 'setText' method does not accept value 0. fixed.
* timespinner: When running in IE11, the error occurs when clicking on the empty textbox. fixed.
* tabs: The 'update' method can not update only the panel body. fixed.
* Improvement
* combobox: Improve the performance of displaying the drop-down panel.
* combogrid: Remember the displaying text when the drop-down datagrid go to other pages.
* combogrid: The 'setValue' and 'setValues' methods accept a key-value object.
* window: The inline window's mask can auto-stretch its size to fill parent container.
* tabs: The 'showTool' and 'hideTool' methods are available for users to show or hide the tools.
* layout: Allow the user to override the 'cls','headerCls' and 'bodyCls' property values.
* New Plugins
* switchbutton: The switch button with two states:'on' and 'off'.
Version 1.4.2
-------------
* Bug
* treegrid: The column will restore its size to original size after recreating the treegrid. fixed.
* Improvement
* draggable: Add 'delay' property that allows the user to delay the drag operation.
* tree: Add 'filter' property and 'doFilter' method.
* tabs: The 'add' method allows the user to insert a tab panel at a specified index.
* tabs: The user can determine what tab panel can be selected.
* tabs: Add 'justified' and 'narrow' properties.
* layout: Add 'unsplit' and 'split' methods.
* messager: Keyboard navigation features are supported now.
* form: Add 'onChange' event.
* combobox: Add 'queryParams' property.
* slider: Add 'range' property.
* menu: Add 'itemHeight','inline','noline' properties.
* panel: The 'header' property allows the user to customize the panel header.
* menubutton: Add 'hasDownArrow' property.
* New Plugins
* datalist: The plugin to render items in a list.
* navpanel: The root component for the mobile page.
* mobile: The plugin to provide the mobile page stack management and navigation.
Version 1.4.1
-------------
* Bug
* combogrid: The combogrid has different height than other combo components. fixed.
* datagrid: The row element loses some class style value after calling 'updateRow' method. fixed.
* menubutton: Calling 'enable' method on a disabled button can not work well. fixed.
* form: The filebox components in the form do not work correctly after calling 'clear' method. fixed.
* Improvement
* tabs: The 'update' method accepts 'type' option that allows the user to update the header,body,or both.
* panel: Add 'openAnimation','openDuration','closeAnimation' and 'closeDuration' properties to set the animation for opening or closing a panel.
* panel: Add 'footer' property that allows the user to add a footer bar to the bottom of panel.
* datagrid: Calling 'endEdit' method will accept the editing value correctly.
* datagrid: Add 'onBeforeSelect','onBeforeCheck','onBeforeUnselect','onBeforeUncheck' events.
* propertygrid: The user can edit a row by calling 'beginEdit' method.
* datebox: Add 'cloneFrom' method to create the datebox component quickly.
* datetimebox: Add 'cloneFrom' method to create the datetimebox component quickly.
Version 1.4
-------------
* Bug
* menu: The menu should not has a correct height when removed a menu item. fixed.
* datagrid: The 'fitColumns' method does not work normally when the datarid width is too small. fixed.
* Improvement
* The fluid/percentange size is supported now for all easyui components.
* menu: Add 'showItem', 'hideItem' and 'resize' methods.
* menu: Auto resize the height upon the window size.
* menu: Add 'duration' property that allows the user to define duration time in milliseconds to hide menu.
* validatebox: Add 'onBeforeValidate' and 'onValidate' events.
* combo: Extended from textbox now.
* combo: Add 'panelMinWidth','panelMaxWidth','panelMinHeight' and 'panelMaxHeight' properties.
* searchbox: Extended from textbox now.
* tree: The 'getRoot' method will return the top parent node of a specified node if pass a 'nodeEl' parameter.
* tree: Add 'queryParams' property.
* datetimebox: Add 'spinnerWidth' property.
* panel: Add 'doLayout' method to cause the panel to lay out its components.
* panel: Add 'clear' method to clear the panel's content.
* datagrid: The user is allowed to assign percent width to columns.
* form: Add 'ajax','novalidate' and 'queryParams' properties.
* linkbutton: Add 'resize' method.
* New Plugins
* textbox: A enhanced input field that allows users build their form easily.
* datetimespinner: A date and time spinner that allows to pick a specific day.
* filebox: The filebox component represents a file field of the forms.
Version 1.3.6
-------------
* Bug
* treegrid: The 'getChecked' method can not return correct checked rows. fixed.
* tree: The checkbox does not display properly on async tree when 'onlyLeafCheck' property is true. fixed.
* Improvement
* treegrid: All the selecting and checking methods are extended from datagrid component.
* linkbutton: The icon alignment is fully supported, possible values are: 'top','bottom','left','right'.
* linkbutton: Add 'size' property, possible values are: 'small','large'.
* linkbutton: Add 'onClick' event.
* menubutton: Add 'menuAlign' property that allows the user set top level menu alignment.
* combo: Add 'panelAlign' property, possible values are: 'left','right'.
* calendar: The 'formatter','styler' and 'validator' options are available to custom the calendar dates.
* calendar: Add 'onChange' event.
* panel: Add 'method','queryParams' and 'loader' options.
* panel: Add 'onLoadError' event.
* datagrid: Add 'onBeginEdit' event that fires when a row goes into edit mode.
* datagrid: Add 'onEndEdit' event that fires when finishing editing but before destroying editors.
* datagrid: Add 'sort' method and 'onBeforeSortColumn' event.
* datagrid: The 'combogrid' editor has been integrated into datagrid.
* datagrid: Add 'ctrlSelect' property that only allows multi-selection when ctrl+click is used.
* slider: Add 'converter' option that allows users determine how to convert a value to the slider position or the slider position to the value.
* searchbox: Add 'disabled' property.
* searchbox: Add 'disable','enable','clear','reset' methods.
* spinner: Add 'readonly' property, 'readonly' method and 'onChange' event.
Version 1.3.5
-------------
* Bug
* searchbox: The 'searcher' function can not offer 'name' parameter value correctly. fixed.
* combo: The 'isValid' method can not return boolean value. fixed.
* combo: Clicking combo will trigger the 'onHidePanel' event of other combo components that have hidden drop-down panels. fixed.
* combogrid: Some methods can not inherit from combo. fixed.
* Improvement
* datagrid: Improve performance on checking rows.
* menu: Allows to append a menu separator.
* menu: Add 'hideOnUnhover' property to indicate if the menu should be hidden when mouse exits it.
* slider: Add 'clear' and 'reset' methods.
* tabs: Add 'unselect' method that will trigger 'onUnselect' event.
* tabs: Add 'selected' property to specify what tab panel will be opened.
* tabs: The 'collapsible' property of tab panel is supported to determine if the tab panel can be collapsed.
* tabs: Add 'showHeader' property, 'showHeader' and 'hideHeader' methods.
* combobox: The 'disabled' property can be used to disable some items.
* tree: Improve loading performance.
* pagination: The 'layout' property can be used to customize the pagination layout.
* accordion: Add 'unselect' method that will trigger 'onUnselect' event.
* accordion: Add 'selected' and 'multiple' properties.
* accordion: Add 'getSelections' method.
* datebox: Add 'sharedCalendar' property that allows multiple datebox components share one calendar component.
Version 1.3.4
-------------
* Bug
* combobox: The onLoadSuccess event fires when parsing empty local data. fixed.
* form: Calling 'reset' method can not reset datebox field. fixed.
* Improvement
* mobile: The context menu and double click features are supported on mobile devices.
* combobox: The 'groupField' and 'groupFormatter' options are available to display items in groups.
* tree: When append or insert nodes, the 'data' parameter accepts one or more nodes data.
* tree: The 'getChecked' method accepts a single 'state' or an array of 'state'.
* tree: Add 'scrollTo' method.
* datagrid: The 'multiSort' property is added to support multiple column sorting.
* datagrid: The 'rowStyler' and column 'styler' can return CSS class name or inline styles.
* treegrid: Add 'load' method to load data and navigate to the first page.
* tabs: Add 'tabWidth' and 'tabHeight' properties.
* validatebox: The 'novalidate' property is available to indicate whether to perform the validation.
* validatebox: Add 'enableValidation' and 'disableValidation' methods.
* form: Add 'enableValidation' and 'disableValidation' methods.
* slider: Add 'onComplete' event.
* pagination: The 'buttons' property accepts the existing element.
Version 1.3.3
-------------
* Bug
* datagrid: Some style features are not supported by column styler function. fixed.
* datagrid: IE 31 stylesheet limit. fixed.
* treegrid: Some style features are not supported by column styler function. fixed.
* menu: The auto width of menu item displays incorrect in ie6. fixed.
* combo: The 'onHidePanel' event can not fire when clicked outside the combo area. fixed.
* Improvement
* datagrid: Add 'scrollTo' and 'highlightRow' methods.
* treegrid: Enable treegrid to parse data from <tbody> element.
* combo: Add 'selectOnNavigation' and 'readonly' options.
* combobox: Add 'loadFilter' option to allow users to change data format before loading into combobox.
* tree: Add 'onBeforeDrop' callback event.
* validatebox: Dependent on tooltip plugin now, add 'deltaX' property.
* numberbox: The 'filter' options can be used to determine if the key pressed was accepted.
* linkbutton: The group button is available.
* layout: The 'minWidth','maxWidth','minHeight','maxHeight' and 'collapsible' properties are available for region panel.
* New Plugins
* tooltip: Display a popup message when moving mouse over an element.
Version 1.3.2
-------------
* Bug
* datagrid: The loading message window can not be centered when changing the width of datagrid. fixed.
* treegrid: The 'mergeCells' method can not work normally. fixed.
* propertygrid: Calling 'endEdit' method to stop editing a row will cause errors. fixed.
* tree: Can not load empty data when 'lines' property set to true. fixed.
* Improvement
* RTL feature is supported now.
* tabs: Add 'scrollBy' method to scroll the tab header by the specified amount of pixels
* tabs: Add 'toolPosition' property to set tab tools to left or right.
* tabs: Add 'tabPosition' property to define the tab position, possible values are: 'top','bottom','left','right'.
* datagrid: Add a column level property 'order' that allows users to define different default sort order per column.
* datagrid: Add a column level property 'halign' that allows users to define how to align the column header.
* datagrid: Add 'resizeHandle' property to define the resizing column position, by grabbing the left or right edge of the column.
* datagrid: Add 'freezeRow' method to freeze some rows that will always be displayed at the top when the datagrid is scrolled down.
* datagrid: Add 'clearChecked' method to clear all checked records.
* datagrid: Add 'data' property to initialize the datagrid data.
* linkbutton: Add 'iconAlgin' property to define the icon position, supported values are: 'left','right'.
* menu: Add 'minWidth' property.
* menu: The menu width can be automatically calculated.
* tree: New events are available including 'onBeforeDrag','onStartDrag','onDragEnter','onDragOver','onDragLeave',etc.
* combo: Add 'height' property to allow users to define the height of combo.
* combo: Add 'reset' method.
* numberbox: Add 'reset' method.
* spinner: Add 'reset' method.
* spinner: Add 'height' property to allow users to define the height of spinner.
* searchbox: Add 'height' property to allow users to define the height of searchbox.
* form: Add 'reset' method.
* validatebox: Add 'delay' property to delay validating from the last inputting value.
* validatebox: Add 'tipPosition' property to define the tip position, supported values are: 'left','right'.
* validatebox: Multiple validate rules on a field is supported now.
* slider: Add 'reversed' property to determine if the min value and max value will switch their positions.
* progressbar: Add 'height' property to allow users to define the height of progressbar.
Version 1.3.1
-------------
* Bug
* datagrid: Setting the 'pageNumber' property is not valid. fixed.
* datagrid: The id attribute of rows isn't adjusted properly while calling 'insertRow' or 'deleteRow' method.
* dialog: When load content from 'href', the script will run twice. fixed.
* propertygrid: The editors that extended from combo can not accept its changed value. fixed.
* Improvement
* droppable: Add 'disabled' property.
* droppable: Add 'options','enable' and 'disable' methods.
* tabs: The tab panel tools can be changed by calling 'update' method.
* messager: When show a message window, the user can define the window position by applying 'style' property.
* window: Prevent script on window body from running twice.
* window: Add 'hcenter','vcenter' and 'center' methods.
* tree: Add 'onBeforeCheck' callback event.
* tree: Extend the 'getChecked' method to allow users to get 'checked','unchecked' or 'indeterminate' nodes.
* treegrid: Add 'update' method to update a specified node.
* treegrid: Add 'insert' method to insert a new node.
* treegrid: Add 'pop' method to remove a node and get the removed node data.
Version 1.3
-----------
* Bug
* combogrid: When set to 'remote' query mode, the 'queryParams' parameters can't be sent to server. fixed.
* combotree: The tree nodes on drop-down panel can not be unchecked while calling 'clear' method. fixed.
* datetimebox: Setting 'showSeconds' property to false cannot hide seconds info. fixed.
* datagrid: Calling 'mergeCells' method can't auto resize the merged cell while header is hidden. fixed.
* dialog: Set cache to false and load data via ajax, the content cannot be refreshed. fixed.
* Improvement
* The HTML5 'data-options' attribute is available for components to declare all custom options, including properties and events.
* More detailed documentation is available.
* panel: Prevent script on panel body from running twice.
* accordion: Add 'getPanelIndex' method.
* accordion: The tools can be added on panel header.
* datetimebox: Add 'timeSeparator' option that allows users to define the time separator.
* pagination: Add 'refresh' and 'select' methods.
* datagrid: Auto resize the column width to fit the contents when the column width is not defined.
* datagrid: Double click on the right border of columns to auto resize the columns to the contents in the columns.
* datagrid: Add 'autoSizeColumn' method that allows users to adjust the column width to fit the contents.
* datagrid: Add 'getChecked' method to get all rows where the checkbox has been checked.
* datagrid: Add 'selectOnCheck' and 'checkOnSelect' properties and some checking methods to enhance the row selections.
* datagrid: Add 'pagePosition' property to allow users to display pager bar at either top,bottom or both places of the grid.
* datagrid: The buffer view and virtual scroll view are supported to display large amounts of records without pagination.
* tabs: Add 'disableTab' and 'enableTab' methods to allow users to disable or enable a tab panel.
Version 1.2.6
-------------
* Bug
* tabs: Call 'add' method with 'selected:false' option, the added tab panel is always selected. fixed.
* treegrid: The 'onSelect' and 'onUnselect' events can't be triggered. fixed.
* treegrid: Cannot display zero value field. fixed.
* Improvement
* propertygrid: Add 'expandGroup' and 'collapseGroup' methods.
* layout: Allow users to create collapsed layout panels by assigning 'collapsed' property to true.
* layout: Add 'add' and 'remove' methods that allow users to dynamically add or remove region panel.
* layout: Additional tool icons can be added on region panel header.
* calendar: Add 'firstDay' option that allow users to set first day of week. Sunday is 0, Monday is 1, ...
* tree: Add 'lines' option, true to display tree lines.
* tree: Add 'loadFilter' option that allow users to change data format before loading into the tree.
* tree: Add 'loader' option that allow users to define how to load data from remote server.
* treegrid: Add 'onClickCell' and 'onDblClickCell' callback function options.
* datagrid: Add 'autoRowHeight' property that allow users to determine if set the row height based on the contents of that row.
* datagrid: Improve performance to load large data set.
* datagrid: Add 'loader' option that allow users to define how to load data from remote server.
* treegrid: Add 'loader' option that allow users to define how to load data from remote server.
* combobox: Add 'onBeforeLoad' callback event function.
* combobox: Add 'loader' option that allow users to define how to load data from remote server.
* Add support for other loading mode such as dwr,xml,etc.
* New Plugins
* slider: Allows the user to choose a numeric value from a finite range.
Version 1.2.5
-------------
* Bug
* tabs: When add a new tab panel with href property, the content page is loaded twice. fixed.
* form: Failed to call 'load' method to load form input with complex name. fixed.
* draggable: End drag in ie9, the cursor cannot be restored. fixed.
* Improvement
* panel: The tools can be defined via html markup.
* tabs: Call 'close' method to close specified tab panel, users can pass tab title or index of tab panel. Other methods such 'select','getTab' and 'exists' are similar to 'close' method.
* tabs: Add 'getTabIndex' method.
* tabs: Users can define mini tools on tabs.
* tree: The mouse must move a specified distance to begin drag and drop operation.
* resizable: Add 'options','enable' and 'disable' methods.
* numberbox: Allow users to change number format.
* datagrid: The subgrid is supported now.
* searchbox: Add 'selectName' method to select searching type name.
Version 1.2.4
-------------
* Bug
* menu: The menu position is wrong when scroll bar appears. fixed.
* accordion: Cannot display the default selected panel in jQuery 1.6.2. fixed.
* tabs: Cannot display the default selected tab panel in jQuery 1.6.2. fixed.
* Improvement
* menu: Allow users to disable or enable menu item.
* combo: Add 'delay' property to set the delay time to do searching from the last key input event.
* treegrid: The 'getEditors' and 'getEditor' methods are supported now.
* treegrid: The 'loadFilter' option is supported now.
* messager: Add 'progress' method to display a message box with a progress bar.
* panel: Add 'extractor' option to allow users to extract panel content from ajax response.
* New Plugins
* searchbox: Allow users to type words into box and do searching operation.
* progressbar: To display the progress of a task.
Version 1.2.3
-------------
* Bug
* window: Cannot resize the window with iframe content. fixed.
* tree: The node will be removed when dragging to its child. fixed.
* combogrid: The onChange event fires multiple times. fixed.
* accordion: Cannot add batch new panels when animate property is set to true. fixed.
* Improvement
* treegrid: The footer row and row styler features are supported now.
* treegrid: Add 'getLevel','reloadFooter','getFooterRows' methods.
* treegrid: Support root nodes pagination and editable features.
* datagrid: Add 'getFooterRows','reloadFooter','insertRow' methods and improve editing performance.
* datagrid: Add 'loadFilter' option that allow users to change original source data to standard data format.
* draggable: Add 'onBeforeDrag' callback event function.
* validatebox: Add 'remote' validation type.
* combobox: Add 'method' option.
* New Plugins
* propertygrid: Allow users to edit property value in datagrid.
Version 1.2.2
-------------
* Bug
* datagrid: Apply fitColumns cannot work fine while set checkbox column. fixed.
* datagrid: The validateRow method cannot return boolean type value. fixed.
* numberbox: Cannot fix value in chrome when min or max property isn't defined. fixed.
* Improvement
* menu: Add some crud methods.
* combo: Add hasDownArrow property to determine whether to display the down arrow button.
* tree: Supports inline editing.
* calendar: Add some useful methods such as 'resize', 'moveTo' etc.
* timespinner: Add some useful methods.
* datebox: Refactoring based on combo and calendar plugin now.
* datagrid: Allow users to change row style in some conditions.
* datagrid: Users can use the footer row to display summary information.
* New Plugins
* datetimebox: Combines datebox with timespinner component.
Version 1.2.1
-------------
* Bug
* easyloader: Some dependencies cannot be loaded by their order. fixed.
* tree: The checkbox is setted incorrectly when removing a node. fixed.
* dialog: The dialog layout incorrectly when 'closed' property is setted to true. fixed.
* Improvement
* parser: Add onComplete callback function that can indicate whether the parse action is complete.
* menu: Add onClick callback function and some other methods.
* tree: Add some useful methods.
* tree: Drag and Drop feature is supported now.
* tree: Add onContextMenu callback function.
* tabs: Add onContextMenu callback function.
* tabs: Add 'tools' property that can create buttons on right bar.
* datagrid: Add onHeaderContextMenu and onRowContextMenu callback functions.
* datagrid: Custom view is supported.
* treegrid: Add onContextMenu callback function and append,remove methods.
Version 1.2
-------------
* Improvement
* tree: Add cascadeCheck,onlyLeafCheck properties and select event.
* combobox: Enable multiple selection.
* combotree: Enable multiple selection.
* tabs: Remember the trace of selection, when current tab panel is closed, the previous selected tab will be selected.
* datagrid: Extend from panel, so many properties defined in panel can be used for datagrid.
* New Plugins
* treegrid: Represent tabular data in hierarchical view, combines tree view and datagrid.
* combo: The basic component that allow user to extend their combo component such as combobox,combotree,etc.
* combogrid: Combines combobox with drop-down datagrid component.
* spinner: The basic plugin to create numberspinner,timespinner,etc.
* numberspinner: The numberbox that allow user to change value by clicking up and down spin buttons.
* timespinner: The time selector that allow user to quickly inc/dec a time.
Version 1.1.2
-------------
* Bug
* messager: When call show method in layout, the message window will be blocked. fixed.
* Improvement
* datagrid: Add validateRow method, remember the current editing row status when do editing action.
* datagrid: Add the ability to create merged cells.
* form: Add callback functions when loading data.
* panel,window,dialog: Add maximize,minimize,restore,collapse,expand methods.
* panel,tabs,accordion: The lazy loading feature is supported.
* tabs: Add getSelected,update,getTab methods.
* accordion: Add crud methods.
* linkbutton: Accept an id option to set the id attribute.
* tree: Enhance tree node operation.
Version 1.1.1
-------------
* Bug
* form: Cannot clear the value of combobox and combotree component. fixed.
* Improvement
* tree: Add some useful methods such as 'getRoot','getChildren','update',etc.
* datagrid: Add editable feature, improve performance while loading data.
* datebox: Add destroy method.
* combobox: Add destroy and clear method.
* combotree: Add destroy and clear method.
Version 1.1
-------------
* Bug
* messager: When call show method with timeout property setted, an error occurs while clicking the close button. fixed.
* combobox: The editable property of combobox plugin is invalid. fixed.
* window: The proxy box will not be removed when dragging or resizing exceed browser border in ie. fixed.
* Improvement
* menu: The menu item can use <a> markup to display a different page.
* tree: The tree node can use <a> markup to act as a tree menu.
* pagination: Add some event on refresh button and page list.
* datagrid: Add a 'param' parameter for reload method, with which users can pass query parameter when reload data.
* numberbox: Add required validation support, the usage is same as validatebox plugin.
* combobox: Add required validation support.
* combotree: Add required validation support.
* layout: Add some method that can get a region panel and attach event handlers.
* New Plugins
* droppable: A droppable plugin that supports drag drop operation.
* calendar: A calendar plugin that can either be embedded within a page or popup.
* datebox: Combines a textbox with a calendar that let users to select date.
* easyloader: A JavaScript loader that allows you to load plugin and their dependencies into your page.
Version 1.0.5
* Bug
* panel: The fit property of panel performs incorrectly. fixed.
* Improvement
* menu: Add a href attribute for menu item, with which user can display a different page in the current browser window.
* form: Add a validate method to do validation for validatebox component.
* dialog: The dialog can read collapsible,minimizable,maximizable and resizable attribute from markup.
* New Plugins
* validatebox: A validation plugin that checks to make sure the user's input value is valid.
Version 1.0.4
-------------
* Bug
* panel: When panel is invisible, it is abnormal when resized. fixed.
* panel: Memory leak in method 'destroy'. fixed.
* messager: Memory leak when messager box is closed. fixed.
* dialog: No onLoad event occurs when loading remote data. fixed.
* Improvement
* panel: Add method 'setTitle'.
* window: Add method 'setTitle'.
* dialog: Add method 'setTitle'.
* combotree: Add method 'getValue'.
* combobox: Add method 'getValue'.
* form: The 'load' method can load data and fill combobox and combotree field correctly.
Version 1.0.3
-------------
* Bug
* menu: When menu is show in a DIV container, it will be cropped. fixed.
* layout: If you collpase a region panel and then expand it immediately, the region panel will not show normally. fixed.
* accordion: If no panel selected then the first one will become selected and the first panel's body height will not set correctly. fixed.
* Improvement
* tree: Add some methods to support CRUD operation.
* datagrid: Toolbar can accept a new property named 'disabled' to disable the specified tool button.
* New Plugins
* combobox: Combines a textbox with a list of options that users are able to choose from.
* combotree: Combines combobox with drop-down tree component.
* numberbox: Make input element can only enter number char.
* dialog: rewrite the dialog plugin, dialog can contains toolbar and buttons.
@@ -1,18 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX Content</title>
</head>
<body>
<p style="font-size:14px">Here is the content loaded via AJAX.</p>
<ul>
<li>easyui is a collection of user-interface plugin based on jQuery.</li>
<li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
<li>using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.</li>
<li>complete framework for HTML5 web page.</li>
<li>easyui save your time and scales while developing your products.</li>
<li>easyui is very easy but powerful.</li>
</ul>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX Content</title>
</head>
<body>
<p style="font-size:14px">Here is the content loaded via AJAX.</p>
<ul>
<li>easyui is a collection of user-interface plugin based on jQuery.</li>
<li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
<li>using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.</li>
<li>complete framework for HTML5 web page.</li>
<li>easyui save your time and scales while developing your products.</li>
<li>easyui is very easy but powerful.</li>
</ul>
</body>
</html>
@@ -1,104 +1,104 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Row Editing DataGrid - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<table id="dg" data-options="
header:'#hh',
iconCls: 'icon-edit',
singleSelect: true,
fit:true,
fitColumns:true,
border: false,
scrollbarSize: 0,
data: data,
onClickRow: onClickRow
">
<thead>
<tr>
<th data-options="field:'itemid',width:80">Item ID</th>
<th data-options="field:'productid',width:100,editor:'textbox'">Product</th>
<th data-options="field:'listprice',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}">List Price</th>
<th data-options="field:'unitcost',width:80,align:'right',editor:'numberbox'">Unit Cost</th>
</tr>
</thead>
</table>
<div id="hh">
<div class="m-toolbar">
<div class="m-title">Row Editing</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="removeit()"></a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="accept()"></a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-undo',plain:true" onclick="reject()"></a>
</div>
</div>
</div>
<script type="text/javascript">
var data = [
{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
];
$(function(){
$('#dg').datagrid({
data: data
});
});
var editIndex = undefined;
function endEditing(){
if (editIndex == undefined){return true}
if ($('#dg').datagrid('validateRow', editIndex)){
$('#dg').datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}
function onClickRow(index){
if (editIndex != index){
if (endEditing()){
$('#dg').datagrid('selectRow', index)
.datagrid('beginEdit', index);
editIndex = index;
} else {
$('#dg').datagrid('selectRow', editIndex);
}
}
}
function removeit(){
if (editIndex == undefined){return}
$('#dg').datagrid('cancelEdit', editIndex)
.datagrid('deleteRow', editIndex);
editIndex = undefined;
}
function accept(){
if (endEditing()){
$('#dg').datagrid('acceptChanges');
}
}
function reject(){
$('#dg').datagrid('rejectChanges');
editIndex = undefined;
}
</script>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Row Editing DataGrid - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<table id="dg" data-options="
header:'#hh',
iconCls: 'icon-edit',
singleSelect: true,
fit:true,
fitColumns:true,
border: false,
scrollbarSize: 0,
data: data,
onClickRow: onClickRow
">
<thead>
<tr>
<th data-options="field:'itemid',width:80">Item ID</th>
<th data-options="field:'productid',width:100,editor:'textbox'">Product</th>
<th data-options="field:'listprice',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}">List Price</th>
<th data-options="field:'unitcost',width:80,align:'right',editor:'numberbox'">Unit Cost</th>
</tr>
</thead>
</table>
<div id="hh">
<div class="m-toolbar">
<div class="m-title">Row Editing</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="removeit()"></a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="accept()"></a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-undo',plain:true" onclick="reject()"></a>
</div>
</div>
</div>
<script type="text/javascript">
var data = [
{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
];
$(function(){
$('#dg').datagrid({
data: data
});
});
var editIndex = undefined;
function endEditing(){
if (editIndex == undefined){return true}
if ($('#dg').datagrid('validateRow', editIndex)){
$('#dg').datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}
function onClickRow(index){
if (editIndex != index){
if (endEditing()){
$('#dg').datagrid('selectRow', index)
.datagrid('beginEdit', index);
editIndex = index;
} else {
$('#dg').datagrid('selectRow', editIndex);
}
}
}
function removeit(){
if (editIndex == undefined){return}
$('#dg').datagrid('cancelEdit', editIndex)
.datagrid('deleteRow', editIndex);
editIndex = undefined;
}
function accept(){
if (endEditing()){
$('#dg').datagrid('acceptChanges');
}
}
function reject(){
$('#dg').datagrid('rejectChanges');
editIndex = undefined;
}
</script>
</body>
</html>
@@ -1,46 +1,46 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Dialog - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="position:relative">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Dialog</div>
</div>
</header>
<footer>
<div class="m-buttongroup m-buttongroup-justified" style="width:100%">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-picture',size:'large',iconAlign:'top',plain:true">Picture</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-clipart',size:'large',iconAlign:'top',plain:true">Clip Art</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-shapes',size:'large',iconAlign:'top',plain:true">Shapes</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-smartart',size:'large',iconAlign:'top',plain:true">SmartArt</a>
</div>
</footer>
<div style="text-align:center;margin:50px 30px">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:80px;height:30px" onclick="$('#dlg1').dialog('open').dialog('center')">Login</a>
</div>
<div id="dlg1" class="easyui-dialog" style="padding:20px 6px;width:80%;" data-options="inline:true,modal:true,closed:true,title:'Login'">
<div style="margin-bottom:10px">
<input class="easyui-textbox" prompt="Username" style="width:100%;height:30px">
</div>
<div>
<input class="easyui-textbox" type="password" prompt="Password" style="width:100%;height:30px">
</div>
<div class="dialog-button">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100%;height:35px" onclick="$('#dlg1').dialog('close')">Sign in</a>
</div>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Dialog - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="position:relative">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Dialog</div>
</div>
</header>
<footer>
<div class="m-buttongroup m-buttongroup-justified" style="width:100%">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-picture',size:'large',iconAlign:'top',plain:true">Picture</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-clipart',size:'large',iconAlign:'top',plain:true">Clip Art</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-shapes',size:'large',iconAlign:'top',plain:true">Shapes</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-smartart',size:'large',iconAlign:'top',plain:true">SmartArt</a>
</div>
</footer>
<div style="text-align:center;margin:50px 30px">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:80px;height:30px" onclick="$('#dlg1').dialog('open').dialog('center')">Login</a>
</div>
<div id="dlg1" class="easyui-dialog" style="padding:20px 6px;width:80%;" data-options="inline:true,modal:true,closed:true,title:'Login'">
<div style="margin-bottom:10px">
<input class="easyui-textbox" prompt="Username" style="width:100%;height:30px">
</div>
<div>
<input class="easyui-textbox" type="password" prompt="Password" style="width:100%;height:30px">
</div>
<div class="dialog-button">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100%;height:35px" onclick="$('#dlg1').dialog('close')">Sign in</a>
</div>
</div>
</div>
</body>
</html>
@@ -1,41 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Message Dialog - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="position:relative">
<header>
<div class="m-toolbar">
<div class="m-title">Message Dialog</div>
</div>
</header>
<footer>
<div class="m-buttongroup m-buttongroup-justified" style="width:100%;">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-picture',size:'large',iconAlign:'top',plain:true">Picture</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-clipart',size:'large',iconAlign:'top',plain:true">Clip Art</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-shapes',size:'large',iconAlign:'top',plain:true">Shapes</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-smartart',size:'large',iconAlign:'top',plain:true">SmartArt</a>
</div>
</footer>
<div style="text-align:center;margin:50px 30px">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:80px;height:30px" onclick="$('#dlg1').dialog('open').dialog('center')">Click me</a>
</div>
<div id="dlg1" class="easyui-dialog" style="padding:20px 6px;width:80%;" data-options="inline:true,modal:true,closed:true,title:'Information'">
<p>This is a message dialog.</p>
<div class="dialog-button">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100%;height:35px" onclick="$('#dlg1').dialog('close')">OK</a>
</div>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Message Dialog - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="position:relative">
<header>
<div class="m-toolbar">
<div class="m-title">Message Dialog</div>
</div>
</header>
<footer>
<div class="m-buttongroup m-buttongroup-justified" style="width:100%;">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-picture',size:'large',iconAlign:'top',plain:true">Picture</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-clipart',size:'large',iconAlign:'top',plain:true">Clip Art</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-shapes',size:'large',iconAlign:'top',plain:true">Shapes</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-smartart',size:'large',iconAlign:'top',plain:true">SmartArt</a>
</div>
</footer>
<div style="text-align:center;margin:50px 30px">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:80px;height:30px" onclick="$('#dlg1').dialog('open').dialog('center')">Click me</a>
</div>
<div id="dlg1" class="easyui-dialog" style="padding:20px 6px;width:80%;" data-options="inline:true,modal:true,closed:true,title:'Information'">
<p>This is a message dialog.</p>
<div class="dialog-button">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100%;height:35px" onclick="$('#dlg1').dialog('close')">OK</a>
</div>
</div>
</div>
</body>
</html>
@@ -1,54 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Form - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="position:relative;padding:20px">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Form</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#ff').form('reset')" style="width:60px">Reset</a>
</div>
</div>
</header>
<form id="ff">
<div>
<label>Full name</label>
<input class="easyui-textbox" prompt="Full name" style="width:100%">
</div>
<div>
<label>Birthday</label>
<input class="easyui-datebox" prompt="Birthday" data-options="editable:false,panelWidth:220,panelHeight:240,iconWidth:30" style="width:100%">
</div>
<div>
<label>Password</label>
<input class="easyui-textbox" type="password" prompt="Password" style="width:100%">
</div>
<div>
<label>Number</label>
<input class="easyui-numberbox" prompt="Number" style="width:100%">
</div>
<div>
<label>Volumn</label>
<input class="easyui-slider" value="10" style="width:100%">
</div>
</form>
</div>
<style scoped>
form label{
display: block;
margin: 10px 0 5px 0;
}
</style>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Form - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="position:relative;padding:20px">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Form</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#ff').form('reset')" style="width:60px">Reset</a>
</div>
</div>
</header>
<form id="ff">
<div>
<label>Full name</label>
<input class="easyui-textbox" prompt="Full name" style="width:100%">
</div>
<div>
<label>Birthday</label>
<input class="easyui-datebox" prompt="Birthday" data-options="editable:false,panelWidth:220,panelHeight:240,iconWidth:30" style="width:100%">
</div>
<div>
<label>Password</label>
<input class="easyui-textbox" type="password" prompt="Password" style="width:100%">
</div>
<div>
<label>Number</label>
<input class="easyui-numberbox" prompt="Number" style="width:100%">
</div>
<div>
<label>Volumn</label>
<input class="easyui-slider" value="10" style="width:100%">
</div>
</form>
</div>
<style scoped>
form label{
display: block;
margin: 10px 0 5px 0;
}
</style>
</body>
</html>

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 110 B

After

Width:  |  Height:  |  Size: 110 B

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -1,32 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Layout - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Layout</div>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true">Back</a>
</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-search" plain="true" outline="true">Search</a>
</div>
</div>
</header>
<footer style="padding:2px 3px">
<input class="easyui-textbox" style="width:100%;height:32px;" data-options="prompt:'Type something here',buttonText:'<span style=\'padding:0 15px\'>Send</span>'">
</footer>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Layout - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Layout</div>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true">Back</a>
</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-search" plain="true" outline="true">Search</a>
</div>
</div>
</header>
<footer style="padding:2px 3px">
<input class="easyui-textbox" style="width:100%;height:32px;" data-options="prompt:'Type something here',buttonText:'<span style=\'padding:0 15px\'>Send</span>'">
</footer>
</div>
</body>
</html>
@@ -1,39 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Menu - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Menu</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true"></a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="iconCls:'icon-more',menu:'#mm',menuAlign:'right',hasDownArrow:false"></a>
</div>
</div>
</header>
</div>
<div id="mm" class="easyui-menu" style="width:150px;">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div data-options="iconCls:'icon-redo'">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>Toolbar</div>
<div data-options="iconCls:'icon-remove'">Delete</div>
<div>Select All</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Menu - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Menu</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true"></a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="iconCls:'icon-more',menu:'#mm',menuAlign:'right',hasDownArrow:false"></a>
</div>
</div>
</header>
</div>
<div id="mm" class="easyui-menu" style="width:150px;">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div data-options="iconCls:'icon-redo'">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>Toolbar</div>
<div data-options="iconCls:'icon-remove'">Delete</div>
<div>Select All</div>
</div>
</body>
</html>
@@ -1,45 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Menubar - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:70px">Home</a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="menu:'#mm1',iconCls:'icon-edit',outline:true" style="width:70px">Edit</a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="menu:'#mm2',iconCls:'icon-help',outline:true" style="width:75px">Help</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:70px">About</a>
</div>
</div>
</header>
</div>
<div id="mm1" class="easyui-menu" style="width:150px;">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div data-options="iconCls:'icon-redo'">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>Toolbar</div>
<div data-options="iconCls:'icon-remove'">Delete</div>
<div>Select All</div>
</div>
<div id="mm2" style="width:100px;">
<div>Help</div>
<div>Update</div>
<div>About</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Menubar - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:70px">Home</a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="menu:'#mm1',iconCls:'icon-edit',outline:true" style="width:70px">Edit</a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="menu:'#mm2',iconCls:'icon-help',outline:true" style="width:75px">Help</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true,outline:true" style="width:70px">About</a>
</div>
</div>
</header>
</div>
<div id="mm1" class="easyui-menu" style="width:150px;">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div data-options="iconCls:'icon-redo'">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>Toolbar</div>
<div data-options="iconCls:'icon-remove'">Delete</div>
<div>Select All</div>
</div>
<div id="mm2" style="width:100px;">
<div>Help</div>
<div>Update</div>
<div>About</div>
</div>
</body>
</html>
@@ -1,18 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX Content</title>
</head>
<body>
<p style="font-size:14px">Here is the content loaded via AJAX.</p>
<ul>
<li>easyui is a collection of user-interface plugin based on jQuery.</li>
<li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
<li>using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.</li>
<li>complete framework for HTML5 web page.</li>
<li>easyui save your time and scales while developing your products.</li>
<li>easyui is very easy but powerful.</li>
</ul>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX Content</title>
</head>
<body>
<p style="font-size:14px">Here is the content loaded via AJAX.</p>
<ul>
<li>easyui is a collection of user-interface plugin based on jQuery.</li>
<li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
<li>using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.</li>
<li>complete framework for HTML5 web page.</li>
<li>easyui save your time and scales while developing your products.</li>
<li>easyui is very easy but powerful.</li>
</ul>
</body>
</html>
@@ -1,39 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Navigation Panel - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Navigation</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100px;height:30px" onclick="$.mobile.go('#p2')">Goto Panel2</a>
</div>
</div>
<div id="p2" class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Panel2</div>
<div class="m-left">
<a href="#" class="easyui-linkbutton m-back" data-options="plain:true,outline:true,back:true">Back</a>
</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="$.mobile.back()">Go Back</a>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Navigation Panel - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Navigation</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100px;height:30px" onclick="$.mobile.go('#p2')">Goto Panel2</a>
</div>
</div>
<div id="p2" class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Panel2</div>
<div class="m-left">
<a href="#" class="easyui-linkbutton m-back" data-options="plain:true,outline:true,back:true">Back</a>
</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="$.mobile.back()">Go Back</a>
</div>
</div>
</body>
</html>
@@ -1,63 +1,63 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Toolbar - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Toolbar</div>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true">Back</a>
</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton m-next" plain="true" outline="true">Next</a>
</div>
</div>
</header>
<ul class="easyui-datalist" data-options="
fit: true,
lines: true,
border: false,
textFormatter: function(value){
return '<a href\'javascript:void(0)\' class=\'datalist-link\'>' + value + '</a>';
},
onClickRow: function(index,row){
$('#p2-title').html(row.text);
$.mobile.go('#p2');
}
">
<li>Large</li>
<li>Spotted Adult Female</li>
<li>Venomless</li>
<li>Rattleless</li>
<li>Green Adult</li>
<li>Tailless</li>
<li>With tail</li>
<li>Adult Female</li>
</ul>
</div>
<div id="p2" class="easyui-navpanel">
<header>
<div class="m-toolbar">
<span id="p2-title" class="m-title">Detail</span>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true" style="width:50px" onclick="$.mobile.back()">Back</a>
</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100px;height:30px" onclick="$.mobile.back()">Go Back</a>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Toolbar - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Toolbar</div>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true">Back</a>
</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton m-next" plain="true" outline="true">Next</a>
</div>
</div>
</header>
<ul class="easyui-datalist" data-options="
fit: true,
lines: true,
border: false,
textFormatter: function(value){
return '<a href\'javascript:void(0)\' class=\'datalist-link\'>' + value + '</a>';
},
onClickRow: function(index,row){
$('#p2-title').html(row.text);
$.mobile.go('#p2');
}
">
<li>Large</li>
<li>Spotted Adult Female</li>
<li>Venomless</li>
<li>Rattleless</li>
<li>Green Adult</li>
<li>Tailless</li>
<li>With tail</li>
<li>Adult Female</li>
</ul>
</div>
<div id="p2" class="easyui-navpanel">
<header>
<div class="m-toolbar">
<span id="p2-title" class="m-title">Detail</span>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true" style="width:50px" onclick="$.mobile.back()">Back</a>
</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100px;height:30px" onclick="$.mobile.back()">Go Back</a>
</div>
</div>
</body>
</html>
@@ -1,45 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Toolbar Button - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Toolbar Button</div>
</div>
</header>
<footer>
<div class="m-buttongroup m-buttongroup-justified" style="width:100%">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-picture',size:'large',iconAlign:'top',plain:true">Picture</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-clipart',size:'large',iconAlign:'top',plain:true">Clip Art</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-shapes',size:'large',iconAlign:'top',plain:true">Shapes</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-smartart',size:'large',iconAlign:'top',plain:true">SmartArt</a>
</div>
</footer>
<ul class="easyui-datalist" data-options="
fit: true,
lines: true,
border: false
">
<li>Large</li>
<li>Spotted Adult Female</li>
<li>Venomless</li>
<li>Rattleless</li>
<li>Green Adult</li>
<li>Tailless</li>
<li>With tail</li>
<li>Adult Female</li>
</ul>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Toolbar Button - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Toolbar Button</div>
</div>
</header>
<footer>
<div class="m-buttongroup m-buttongroup-justified" style="width:100%">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-picture',size:'large',iconAlign:'top',plain:true">Picture</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-clipart',size:'large',iconAlign:'top',plain:true">Clip Art</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-shapes',size:'large',iconAlign:'top',plain:true">Shapes</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-large-smartart',size:'large',iconAlign:'top',plain:true">SmartArt</a>
</div>
</footer>
<ul class="easyui-datalist" data-options="
fit: true,
lines: true,
border: false
">
<li>Large</li>
<li>Spotted Adult Female</li>
<li>Venomless</li>
<li>Rattleless</li>
<li>Green Adult</li>
<li>Tailless</li>
<li>With tail</li>
<li>Adult Female</li>
</ul>
</div>
</body>
</html>
@@ -1,76 +1,76 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Menu on Toolbar - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Menu on Toolbar</div>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-man',plain:true"></a>
</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true"></a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="iconCls:'icon-more',plain:true,hasDownArrow:false,menu:'#mm',menuAlign:'right'"></a>
</div>
</div>
</header>
<div id="mm" class="easyui-menu" style="width:150px;" data-options="itemHeight:30,noline:true">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div data-options="iconCls:'icon-redo'">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>Toolbar</div>
<div data-options="iconCls:'icon-remove'">Delete</div>
<div>Select All</div>
</div>
<ul class="easyui-datalist" data-options="
fit: true,
lines: true,
border: false,
textFormatter: function(value){
return '<a href\'javascript:void(0)\' class=\'datalist-link\'>' + value + '</a>';
},
onClickRow: function(index,row){
$('#p2-title').html(row.text);
$.mobile.go('#p2');
}
">
<li>Large</li>
<li>Spotted Adult Female</li>
<li>Venomless</li>
<li>Rattleless</li>
<li>Green Adult</li>
<li>Tailless</li>
<li>With tail</li>
<li>Adult Female</li>
</ul>
</div>
<div id="p2" class="easyui-navpanel">
<header>
<div class="m-toolbar">
<span id="p2-title" class="m-title">Detail</span>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true" style="width:50px" onclick="$.mobile.back()">Back</a>
</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100px;height:30px" onclick="$.mobile.back()">Go Back</a>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Menu on Toolbar - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel">
<header>
<div class="m-toolbar">
<div class="m-title">Menu on Toolbar</div>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-man',plain:true"></a>
</div>
<div class="m-right">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true"></a>
<a href="javascript:void(0)" class="easyui-menubutton" data-options="iconCls:'icon-more',plain:true,hasDownArrow:false,menu:'#mm',menuAlign:'right'"></a>
</div>
</div>
</header>
<div id="mm" class="easyui-menu" style="width:150px;" data-options="itemHeight:30,noline:true">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div data-options="iconCls:'icon-redo'">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>Toolbar</div>
<div data-options="iconCls:'icon-remove'">Delete</div>
<div>Select All</div>
</div>
<ul class="easyui-datalist" data-options="
fit: true,
lines: true,
border: false,
textFormatter: function(value){
return '<a href\'javascript:void(0)\' class=\'datalist-link\'>' + value + '</a>';
},
onClickRow: function(index,row){
$('#p2-title').html(row.text);
$.mobile.go('#p2');
}
">
<li>Large</li>
<li>Spotted Adult Female</li>
<li>Venomless</li>
<li>Rattleless</li>
<li>Green Adult</li>
<li>Tailless</li>
<li>With tail</li>
<li>Adult Female</li>
</ul>
</div>
<div id="p2" class="easyui-navpanel">
<header>
<div class="m-toolbar">
<span id="p2-title" class="m-title">Detail</span>
<div class="m-left">
<a href="javascript:void(0)" class="easyui-linkbutton m-back" plain="true" outline="true" style="width:50px" onclick="$.mobile.back()">Back</a>
</div>
</div>
</header>
<div style="margin:50px 0 0;text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" style="width:100px;height:30px" onclick="$.mobile.back()">Go Back</a>
</div>
</div>
</body>
</html>
@@ -1,56 +1,56 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Tree - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="padding:10px">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Tree</div>
</div>
</header>
<ul class="easyui-tree" data-options="animate:true">
<li>
<span>My Documents</span>
<ul>
<li data-options="state:'closed'">
<span>Photos</span>
<ul>
<li>
<span>Friend</span>
</li>
<li>
<span>Wife</span>
</li>
<li>
<span>Company</span>
</li>
</ul>
</li>
<li>
<span>Program Files</span>
<ul>
<li>Intel</li>
<li>Java</li>
<li>Microsoft Office</li>
<li>Games</li>
</ul>
</li>
<li>index.html</li>
<li>about.html</li>
<li>welcome.html</li>
</ul>
</li>
</ul>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Basic Tree - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="padding:10px">
<header>
<div class="m-toolbar">
<div class="m-title">Basic Tree</div>
</div>
</header>
<ul class="easyui-tree" data-options="animate:true">
<li>
<span>My Documents</span>
<ul>
<li data-options="state:'closed'">
<span>Photos</span>
<ul>
<li>
<span>Friend</span>
</li>
<li>
<span>Wife</span>
</li>
<li>
<span>Company</span>
</li>
</ul>
</li>
<li>
<span>Program Files</span>
<ul>
<li>Intel</li>
<li>Java</li>
<li>Microsoft Office</li>
<li>Games</li>
</ul>
</li>
<li>index.html</li>
<li>about.html</li>
<li>welcome.html</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
+55 -55
View File
@@ -1,56 +1,56 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Drag Drop Tree Nodes - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="padding:10px">
<header>
<div class="m-toolbar">
<div class="m-title">Drag Drop Tree Nodes</div>
</div>
</header>
<ul class="easyui-tree" data-options="animate:true,dnd:true">
<li>
<span>My Documents</span>
<ul>
<li data-options="state:'closed'">
<span>Photos</span>
<ul>
<li>
<span>Friend</span>
</li>
<li>
<span>Wife</span>
</li>
<li>
<span>Company</span>
</li>
</ul>
</li>
<li>
<span>Program Files</span>
<ul>
<li>Intel</li>
<li>Java</li>
<li>Microsoft Office</li>
<li>Games</li>
</ul>
</li>
<li>index.html</li>
<li>about.html</li>
<li>welcome.html</li>
</ul>
</li>
</ul>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Drag Drop Tree Nodes - jQuery EasyUI Mobile Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/metro/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/mobile.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.mobile.js"></script>
</head>
<body>
<div class="easyui-navpanel" style="padding:10px">
<header>
<div class="m-toolbar">
<div class="m-title">Drag Drop Tree Nodes</div>
</div>
</header>
<ul class="easyui-tree" data-options="animate:true,dnd:true">
<li>
<span>My Documents</span>
<ul>
<li data-options="state:'closed'">
<span>Photos</span>
<ul>
<li>
<span>Friend</span>
</li>
<li>
<span>Wife</span>
</li>
<li>
<span>Company</span>
</li>
</ul>
</li>
<li>
<span>Program Files</span>
<ul>
<li>Intel</li>
<li>Java</li>
<li>Microsoft Office</li>
<li>Games</li>
</ul>
</li>
<li>index.html</li>
<li>about.html</li>
<li>welcome.html</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
@@ -1,18 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX Content</title>
</head>
<body>
<p style="font-size:14px">Here is the content loaded via AJAX.</p>
<ul>
<li>easyui is a collection of user-interface plugin based on jQuery.</li>
<li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
<li>using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.</li>
<li>complete framework for HTML5 web page.</li>
<li>easyui save your time and scales while developing your products.</li>
<li>easyui is very easy but powerful.</li>
</ul>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX Content</title>
</head>
<body>
<p style="font-size:14px">Here is the content loaded via AJAX.</p>
<ul>
<li>easyui is a collection of user-interface plugin based on jQuery.</li>
<li>easyui provides essential functionality for building modern, interactive, javascript applications.</li>
<li>using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.</li>
<li>complete framework for HTML5 web page.</li>
<li>easyui save your time and scales while developing your products.</li>
<li>easyui is very easy but powerful.</li>
</ul>
</body>
</html>
@@ -1,51 +1,51 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accordion Actions - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Accordion Actions</h2>
<p>Click the buttons below to add or remove accordion items.</p>
<div style="margin:20px 0 10px 0;">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="selectPanel()">Select</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="addPanel()">Add</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="removePanel()">Remove</a>
</div>
<div id="aa" class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
</div>
<script type="text/javascript">
function selectPanel(){
$.messager.prompt('Prompt','Please enter the panel title:',function(s){
if (s){
$('#aa').accordion('select',s);
}
});
}
var idx = 1;
function addPanel(){
$('#aa').accordion('add',{
title:'Title'+idx,
content:'<div style="padding:10px">Content'+idx+'</div>'
});
idx++;
}
function removePanel(){
var pp = $('#aa').accordion('getSelected');
if (pp){
var index = $('#aa').accordion('getPanelIndex',pp);
$('#aa').accordion('remove',index);
}
}
</script>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accordion Actions - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Accordion Actions</h2>
<p>Click the buttons below to add or remove accordion items.</p>
<div style="margin:20px 0 10px 0;">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="selectPanel()">Select</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="addPanel()">Add</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="removePanel()">Remove</a>
</div>
<div id="aa" class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
</div>
<script type="text/javascript">
function selectPanel(){
$.messager.prompt('Prompt','Please enter the panel title:',function(s){
if (s){
$('#aa').accordion('select',s);
}
});
}
var idx = 1;
function addPanel(){
$('#aa').accordion('add',{
title:'Title'+idx,
content:'<div style="padding:10px">Content'+idx+'</div>'
});
idx++;
}
function removePanel(){
var pp = $('#aa').accordion('getSelected');
if (pp){
var index = $('#aa').accordion('getPanelIndex',pp);
$('#aa').accordion('remove',index);
}
}
</script>
</body>
</html>
+27 -27
View File
@@ -1,28 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Loading Accordion Content with AJAX - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Loading Accordion Content with AJAX</h2>
<p>Click AJAX panel header to load content via AJAX.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Help" data-options="iconCls:'icon-help'" style="padding:10px;">
<p>The accordion allows you to provide multiple panels and display one or more at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.</p>
</div>
<div title="Ajax" data-options="href:'_content.html'" style="padding:10px">
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Loading Accordion Content with AJAX - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Loading Accordion Content with AJAX</h2>
<p>Click AJAX panel header to load content via AJAX.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Help" data-options="iconCls:'icon-help'" style="padding:10px;">
<p>The accordion allows you to provide multiple panels and display one or more at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.</p>
</div>
<div title="Ajax" data-options="href:'_content.html'" style="padding:10px">
</div>
</div>
</body>
</html>
+51 -51
View File
@@ -1,52 +1,52 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Accordion - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Basic Accordion</h2>
<p>Click on panel header to show its content.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Help" data-options="iconCls:'icon-help'" style="padding:10px;">
<p>The accordion allows you to provide multiple panels and display one or more at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.</p>
</div>
<div title="TreeMenu" data-options="iconCls:'icon-search'" style="padding:10px;">
<ul class="easyui-tree">
<li>
<span>Foods</span>
<ul>
<li>
<span>Fruits</span>
<ul>
<li>apple</li>
<li>orange</li>
</ul>
</li>
<li>
<span>Vegetables</span>
<ul>
<li>tomato</li>
<li>carrot</li>
<li>cabbage</li>
<li>potato</li>
<li>lettuce</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Accordion - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Basic Accordion</h2>
<p>Click on panel header to show its content.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Help" data-options="iconCls:'icon-help'" style="padding:10px;">
<p>The accordion allows you to provide multiple panels and display one or more at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.</p>
</div>
<div title="TreeMenu" data-options="iconCls:'icon-search'" style="padding:10px;">
<ul class="easyui-tree">
<li>
<span>Foods</span>
<ul>
<li>
<span>Fruits</span>
<ul>
<li>apple</li>
<li>orange</li>
</ul>
</li>
<li>
<span>Vegetables</span>
<ul>
<li>tomato</li>
<li>carrot</li>
<li>cabbage</li>
<li>potato</li>
<li>lettuce</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</body>
</html>
@@ -1,12 +1,12 @@
{"total":28,"rows":[
{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
]}
{"total":28,"rows":[
{"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
{"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"},
{"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
{"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
{"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"},
{"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
{"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
]}
@@ -1,33 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Keep Expandable Panel in Accordion - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Keep Expandable Panel in Accordion</h2>
<p>Keep a expandable panel and prevent it from collapsing.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="Top Panel" data-options="iconCls:'icon-search',collapsed:false,collapsible:false" style="padding:10px;">
<input class="easyui-searchbox" prompt="Enter something here" style="width:300px;height:25px;">
</div>
<div title="About" data-options="selected:true" style="padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Title1" style="padding:10px">
<p>Content1</p>
</div>
<div title="Title2" style="padding:10px">
<p>Content2</p>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Keep Expandable Panel in Accordion - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Keep Expandable Panel in Accordion</h2>
<p>Keep a expandable panel and prevent it from collapsing.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="Top Panel" data-options="iconCls:'icon-search',collapsed:false,collapsible:false" style="padding:10px;">
<input class="easyui-searchbox" prompt="Enter something here" style="width:300px;height:25px;">
</div>
<div title="About" data-options="selected:true" style="padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Title1" style="padding:10px">
<p>Content1</p>
</div>
<div title="Title2" style="padding:10px">
<p>Content2</p>
</div>
</div>
</body>
</html>
+32 -32
View File
@@ -1,33 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Fluid Accordion - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Fluid Accordion</h2>
<p>This example shows how to set the width of accordion to a percentage of its parent container.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:100%;height:180px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<p>width: 100%</p>
</div>
<div title="Help" data-options="iconCls:'icon-help',href:'_content.html'" style="padding:10px;">
</div>
</div>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:50%;height:180px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<p>width: 50%</p>
</div>
<div title="Help" data-options="iconCls:'icon-help',href:'_content.html'" style="padding:10px;">
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Fluid Accordion - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Fluid Accordion</h2>
<p>This example shows how to set the width of accordion to a percentage of its parent container.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:100%;height:180px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<p>width: 100%</p>
</div>
<div title="Help" data-options="iconCls:'icon-help',href:'_content.html'" style="padding:10px;">
</div>
</div>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:50%;height:180px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<p>width: 50%</p>
</div>
<div title="Help" data-options="iconCls:'icon-help',href:'_content.html'" style="padding:10px;">
</div>
</div>
</body>
</html>
@@ -1,34 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Multiple Accordion Panels - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Multiple Accordion Panels</h2>
<p>Enable 'multiple' mode to expand multiple panels at one time.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" data-options="multiple:true" style="width:500px;height1:300px;">
<div title="Language" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<p>A programming language is a formal language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely.</p>
</div>
<div title="Java" style="padding:10px;">
<p>Java (Indonesian: Jawa) is an island of Indonesia. With a population of 135 million (excluding the 3.6 million on the island of Madura which is administered as part of the provinces of Java), Java is the world's most populous island, and one of the most densely populated places in the world.</p>
</div>
<div title="C#" style="padding:10px;">
<p>C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.</p>
</div>
<div title="Ruby" style="padding:10px;">
<p>A dynamic, reflective, general-purpose object-oriented programming language.</p>
</div>
<div title="Fortran" style="padding:10px;">
<p>Fortran (previously FORTRAN) is a general-purpose, imperative programming language that is especially suited to numeric computation and scientific computing.</p>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Multiple Accordion Panels - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Multiple Accordion Panels</h2>
<p>Enable 'multiple' mode to expand multiple panels at one time.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" data-options="multiple:true" style="width:500px;height1:300px;">
<div title="Language" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<p>A programming language is a formal language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely.</p>
</div>
<div title="Java" style="padding:10px;">
<p>Java (Indonesian: Jawa) is an island of Indonesia. With a population of 135 million (excluding the 3.6 million on the island of Madura which is administered as part of the provinces of Java), Java is the world's most populous island, and one of the most densely populated places in the world.</p>
</div>
<div title="C#" style="padding:10px;">
<p>C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.</p>
</div>
<div title="Ruby" style="padding:10px;">
<p>A dynamic, reflective, general-purpose object-oriented programming language.</p>
</div>
<div title="Fortran" style="padding:10px;">
<p>Fortran (previously FORTRAN) is a general-purpose, imperative programming language that is especially suited to numeric computation and scientific computing.</p>
</div>
</div>
</body>
</html>
+47 -47
View File
@@ -1,48 +1,48 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accordion Tools - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Accordion Tools</h2>
<p>Click the tools on top right of panel to perform actions.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Help" data-options="iconCls:'icon-help'" style="padding:10px;">
<p>The accordion allows you to provide multiple panels and display one ore more at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.</p>
</div>
<div title="DataGrid" style="padding:10px" data-options="
selected:true,
tools:[{
iconCls:'icon-reload',
handler:function(){
$('#dg').datagrid('reload');
}
}]">
<table id="dg" class="easyui-datagrid"
data-options="url:'datagrid_data1.json',method:'get',fit:true,fitColumns:true,singleSelect:true">
<thead>
<tr>
<th data-options="field:'itemid',width:80">Item ID</th>
<th data-options="field:'productid',width:100">Product ID</th>
<th data-options="field:'listprice',width:80,align:'right'">List Price</th>
<th data-options="field:'unitcost',width:80,align:'right'">Unit Cost</th>
<th data-options="field:'attr1',width:150">Attribute</th>
<th data-options="field:'status',width:50,align:'center'">Status</th>
</tr>
</thead>
</table>
</div>
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accordion Tools - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Accordion Tools</h2>
<p>Click the tools on top right of panel to perform actions.</p>
<div style="margin:20px 0 10px 0;"></div>
<div class="easyui-accordion" style="width:500px;height:300px;">
<div title="About" data-options="iconCls:'icon-ok'" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Help" data-options="iconCls:'icon-help'" style="padding:10px;">
<p>The accordion allows you to provide multiple panels and display one ore more at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.</p>
</div>
<div title="DataGrid" style="padding:10px" data-options="
selected:true,
tools:[{
iconCls:'icon-reload',
handler:function(){
$('#dg').datagrid('reload');
}
}]">
<table id="dg" class="easyui-datagrid"
data-options="url:'datagrid_data1.json',method:'get',fit:true,fitColumns:true,singleSelect:true">
<thead>
<tr>
<th data-options="field:'itemid',width:80">Item ID</th>
<th data-options="field:'productid',width:100">Product ID</th>
<th data-options="field:'listprice',width:80,align:'right'">List Price</th>
<th data-options="field:'unitcost',width:80,align:'right'">Unit Cost</th>
<th data-options="field:'attr1',width:150">Attribute</th>
<th data-options="field:'status',width:50,align:'center'">Status</th>
</tr>
</thead>
</table>
</div>
</div>
</body>
</html>
+18 -18
View File
@@ -1,19 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Calendar - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Basic Calendar</h2>
<p>Click to select date.</p>
<div style="margin:20px 0"></div>
<div class="easyui-calendar" style="width:250px;height:250px;"></div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Calendar - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
<h2>Basic Calendar</h2>
<p>Click to select date.</p>
<div style="margin:20px 0"></div>
<div class="easyui-calendar" style="width:250px;height:250px;"></div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More