Files
FHC-Core/content/functions.js.php

454 lines
12 KiB
PHP

<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
* functions.js.php
*
* enthaelt globale JS Funktionen
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
if(false): ?><script><?php endif; ?>
// ****
// * Liefert den Value aus einer XML-Datasource
// ****
function getTargetHelper(dsource,subj,predi)
{
if (dsource.hasArcOut(subj, predi))
{
var target = dsource.GetTarget(subj, predi, true);
if (target instanceof Components.interfaces.nsIRDFLiteral ||
target instanceof Components.interfaces.nsIRDFInt)
{
return target.Value;
}
}
return "";
}
// ****
// * Gibt eine Message auf die Javascript Console aus
// ****
function debug(msg)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage(msg);
}
// ****
// * Liefert einen Timestamp in Sekunden
// * zum anhaengen an eine URL um Caching zu verhindern
// ****
function gettimestamp()
{
var now = new Date();
var ret = now.getHours()*60*60*60;
ret = ret + now.getMinutes()*60*60;
ret = ret + now.getSeconds()*60;
ret = ret + now.getMilliseconds();
return ret;
}
// ****
// * Parst die Returnwerte der DBDML Scripte
// * @param response ... RDF Response des DBDML Scripts
// *
// * obj.dbdml_return ... Returnwert des Scripts
// * obj.dbdml_errormsg ... Errormessage
// * obj.dbdml_warning ... Warnhinweis
// * obj.dbdml_data ... zusaetzliche Daten vom Script. zB ID des angelegten Datansatzes
// ****
function ParseReturnValue(response)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
retval = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
if(retval=='true')
this.dbdml_return = true;
else
this.dbdml_return = false;
this.dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
this.dbdml_data = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#data" ));
this.dbdml_warning = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#warning" ));
//debug('data:'+this.dbdml_data+' errormsg:'+this.dbdml_errormsg+' return:'+this.dbdml_return );
}
function parseRDFString(str, url)
{
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var memoryDS = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);
var ios=Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
baseUri=ios.newURI(url,null,null);
var parser=Components.classes["@mozilla.org/rdf/xml-parser;1"].createInstance(Components.interfaces.nsIRDFXMLParser);
parser.parseString(memoryDS,baseUri,str);
return memoryDS;
}
// ****
// * Zeigt einen Text in der Statusbar an
// ****
function SetStatusBarText(text)
{
document.getElementById('statusbarpanel-text').label=text;
}
// ****
// * Prueft ein Datum auf Gueltigkeit
// * Erlaubte Formate: 1.1.2007, 31.12.2007
// ****
function CheckDatum(datum)
{
var pattern = /^(0[1-9]|[1-9]|[12][0-9]|3[01])[.](0[1-9]|[1-9]|1[012])[.](19|20)\d\d$/
if(pattern.exec(datum))
return true;
else
return false;
}
// ****
// * Wandelt ein Datum ins ISO Format um
// * aus 31.2.2007 wird 2007-02-31
// ****
function ConvertDateToISO(datum)
{
if(datum!='')
{
arr = datum.split('.');
if(arr[0].length==1)
arr[0]='0'+arr[0];
if(arr[1].length==1)
arr[1]='0'+arr[1];
return arr[2]+'-'+arr[1]+'-'+arr[0];
}
else
return '';
}
// ****
// * Wandelt ein Datum ins ISO Format um
// * aus 2007-02-31 wird 31.2.2007
// ****
function ConvertDateToGerman(datum)
{
if(datum!='')
{
arr = datum.split('-');
if(arr[1].length==1)
arr[1]='0'+arr[1];
if(arr[2].length==1)
arr[2]='0'+arr[2];
return arr[2]+'.'+arr[1]+'.'+arr[0];
}
else
return '';
}
// ****
// * Liefert die Daten aus der Zwischenablage
// ****
function getDataFromClipboard()
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
if (!clip)
return false;
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans)
return false;
trans.addDataFlavor("text/unicode");
clip.getData(trans,clip.kGlobalClipboard);
var str = new Object();
var strLength = new Object();
trans.getTransferData("text/unicode",str,strLength);
if (str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
if (str) pastetext = str.data.substring(0,strLength.value / 2);
return pastetext;
}
// ****
// * Kopiert Inhalte in die Zwischenablage
// ****
function copyToClipboard(link)
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
try {
const clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipboard.copyString(link);
// Erfolgsmeldung anzeigen
alert("Link erfolgreich in die Zwischenablage kopiert.\nBitte in anderem Browser einfügen und öffnen.");
} catch (e) {
alert("Fehler beim Kopieren in die Zwischenablage: " + e);
}
}
// ****
// * Oeffnet ein neues Fenster welches dann die Datei 'action' mit dem POST Parameter 'data' aufruft
// ****
function OpenWindowPost(action, data)
{
newwindow= window.open ("","FAS","width=350, height=350");
newwindow.document.getElementsByTagName('body')[0].innerHTML = "<form id='postform-form' name='postfrm' action='' method='POST'><input type='hidden' id='postform-textbox-data' name='data' /></form>";
newwindow.document.getElementById('postform-textbox-data').value=data;
newwindow.document.getElementById('postform-form').action=action;
newwindow.document.postfrm.submit();
}
// ****
// * Liefert das Aktuelle Studiensemester
// ****
function getStudiensemester()
{
return document.getElementById('statusbarpanel-semester').label;
}
// ****
// * Markiert in einem Editierbaren DropDown Menu
// * einen Eintrag.
// * @param id = ID der Menulist
// * data = value des Eintrages der markiert werden soll
// ****
function MenulistSelectItemOnValue(id, data)
{
var children = document.getElementById(id).getElementsByAttribute('value',data);
document.getElementById(id).selectedItem=children[0];
}
// ****
// * Liefert den value eines Editierbaren DropDowns
// * @param id = ID der Menulist
// ****
function MenulistGetSelectedValue(id)
{
menulist = document.getElementById(id);
//Es kann sein, dass im Eingabefeld nichts steht und
//trotzdem ein Eintrag auf selected gesetzt ist.
//In diesem Fall soll aber kein Wert zurueckgegeben werden
if(menulist.value=='')
return '';
//Wenn es Selektierte Eintraege gibt, dann den value zurueckliefern
var children = menulist.getElementsByAttribute('selected','true');
if(children.length>0)
return children[0].value;
else
return '';
}
// *****
// * Liefert den Text aus einem Tree
// * Parameter: tree ... Referenz auf den Tree
// * col ... id der Spalte
// * idx ... Zeilenindex im Tree
// *****
function getTreeCellText(tree, col, idx)
{
col = tree.columns ? tree.columns[col] : col;
return tree.view.getCellText(idx, col);
}
/**
* Like getTreeCellText, but returns all the selected values (= cooler!)
* @param: tree
* @param: col
*/
function getMultipleTreeCellText(tree, col)
{
var start = new Object();
var end = new Object();
var numRanges = tree.view.selection.getRangeCount();
var returnArray = new Array();
for (var t = 0; t < numRanges; t++)
{
tree.view.selection.getRangeAt(t, start, end);
for (var v = start.value; v <= end.value; v++)
{
returnArray.push(getTreeCellText(tree, col, v));
}
}
return returnArray;
}
/**
* Create a window with a form inside and a hidden input for each element of the given array
* @param: action
* @param: dataName
* @param: data
*/
function openWindowPostArray(action, dataName, data)
{
var FORM_HEAD = "<form id='postform-form' name='postfrm' action='' method='POST'>\n";
var FORM_FOOT = "</form>";
var inputsHidden = "";
for (var i = 0; i < data.length; i++)
{
inputsHidden += " <input type='hidden' name='" + dataName + "[]' value='" + data[i] + "' />\n";
}
var newwindow = window.open("", "FAS");
newwindow.document.getElementsByTagName('body')[0].innerHTML = FORM_HEAD + inputsHidden + FORM_FOOT;
newwindow.document.getElementById('postform-form').action = action;
newwindow.document.postfrm.submit();
}
// ****
// * Trim Member Function fuer Strings
// ****
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
// ****
// * StartsWidth Member Function fuer Strings
// ****
String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}
// ****
// * Liefert den Usernamne des eingeloggten Users
// ****
function getUsername()
{
return '<?php echo get_uid(); ?>';
}
// ****
// * Laedt den Wert einer Variable aus der DB
// ****
function getvariable(variable)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'getvariable');
req.add('name', variable);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
return val.dbdml_data;
}
}
/**
* Setzte eine Variable
*/
function setVariable(variable, wert)
{
// Request absetzen
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'variablechange');
req.add('name', variable);
req.add('wert', wert);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
return false;
}
else
{
return true;
}
}
// ****
// * Validierung Alias auf Sonderzeichen (analog zu checkWunschUid erlaubt)
// ****
function checkAlias(alias)
{
if (/^[a-z0-9 . _ -]*$/i.test(alias) === false)
{
return false;
}
else
return true;
}