mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-18 23:42:17 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -20,6 +20,7 @@ application/models/extensions/
|
||||
application/views/extensions/
|
||||
application/widgets/extensions/
|
||||
application/logs/
|
||||
public/extensions/
|
||||
tests/codeception/_output/*
|
||||
!/tests/codeception/_output/.placeholder
|
||||
tests/codeception/codeception.yml
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
- **[CORE]** Update campus.tbl_templates (contentmittitel and contentohnetitel) with system/templates/contentmittitel_xslt_xhtml.xslt andsystem/templates/contentohnetitel_xslt_xhtml.xslt
|
||||
- **[CORE]** Neue Style Anweisungen (div.header_logo, td.headerbar, div.cis_logo) müssen in Custom Stylesheet hinzugefügt werden
|
||||
|
||||
### Removed
|
||||
**[CORE]** Removed Support for XSLFO2PDF Documents - use unoconv instead
|
||||
**[CORE]** Removed Support for FOP Documents - use unoconv instead
|
||||
|
||||
### Deprecated
|
||||
- **[CORE]** Die folgenden Datenbank Tabellen und Spalten wurden als DEPRECATED markiert und werden mit der nächsten Version entfernt:
|
||||
public.tbl_aufnahmeschluessel, public.tbl_aufnahmetermin, public.tbl_aufnahmetermintyp, public.tbl_preinteressent,
|
||||
|
||||
@@ -236,6 +236,13 @@ $config['fhc_acl'] = array
|
||||
'wawi.tbl_rechnungstyp' => 'basis/rechnungstyp',
|
||||
'wawi.tbl_zahlungstyp' => 'basis/zahlungstyp',
|
||||
|
||||
// Temporary
|
||||
'extension.tbl_budgetantrag' => 'basis/kostenstelle',
|
||||
'extension.tbl_budgetposition' => 'basis/kostenstelle',
|
||||
'extension.tbl_budgetstatus' => 'basis/kostenstelle',
|
||||
'extension.tbl_budgetantrag_status' => 'basis/kostenstelle',
|
||||
'extension.tbl_dsms_anonymisierung' => 'dsms/export',
|
||||
|
||||
DMS_PATH => 'fs/dms',
|
||||
|
||||
'PhrasesLib.getPhrase' => 'system/PhrasesLib'
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
<?php
|
||||
|
||||
$config['navigation_header'] = array(
|
||||
'Vilesci/index' => array(
|
||||
'FH-Complete' => base_url('index.ci.php/'),
|
||||
'*' => array(
|
||||
'FH-Complete' => site_url(''),
|
||||
'Vilesci' => base_url('/vilesci'),
|
||||
'CIS' => CIS_ROOT
|
||||
),
|
||||
'system/infocenter/InfoCenter/index' => array(
|
||||
'FH-Complete' => base_url('index.ci.php/'),
|
||||
'Vilesci' => base_url('/vilesci'),
|
||||
'CIS' => CIS_ROOT
|
||||
),
|
||||
'system/infocenter/InfoCenter/showDetails' => array(
|
||||
'system/infocenter/InfoCenter/infocenterFreigegeben' => array(
|
||||
'FH-Complete' => base_url('index.ci.php/'),
|
||||
'Vilesci' => base_url('/vilesci'),
|
||||
'CIS' => CIS_ROOT
|
||||
@@ -39,7 +34,7 @@ $config['navigation_menu']['Vilesci/index'] = array(
|
||||
'expand' => true
|
||||
),
|
||||
'Infocenter' => array(
|
||||
'link' => base_url('index.ci.php/system/infocenter/InfoCenter'),
|
||||
'link' => site_url('/system/infocenter/InfoCenter'),
|
||||
'icon' => 'info',
|
||||
'description' => 'Infocenter',
|
||||
'expand' => true
|
||||
@@ -59,17 +54,35 @@ $config['navigation_menu']['Vilesci/index'] = array(
|
||||
'expand' => true
|
||||
),
|
||||
'Extensions' => array(
|
||||
'link' => base_url('index.ci.php/system/extensions/Manager'),
|
||||
'link' => site_url('/system/extensions/Manager'),
|
||||
'icon' => 'cubes',
|
||||
'description' => 'Extensions Manager',
|
||||
'expand' => true
|
||||
),
|
||||
'Datenschutz' => array(
|
||||
'link' => base_url('index.ci.php/extensions/FHC-Core-DSMS/export'),
|
||||
'description' => 'Datenschutz',
|
||||
'icon' => 'legal',
|
||||
'expand' => true
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
//HIDDEN as long as filter is revised
|
||||
//$config['navigation_menu']['system/infocenter/InfoCenter/index'] = array(
|
||||
// 'Freigegeben' => array(
|
||||
// 'link' => base_url('index.ci.php/system/infocenter/InfoCenter/infocenterFreigegeben'),
|
||||
// 'description' => 'Freigegeben',
|
||||
// 'icon' => 'thumbs-up'
|
||||
// ));
|
||||
|
||||
$config['navigation_menu']['system/infocenter/InfoCenter/showDetails'] = array(
|
||||
'Freigegeben' => array(
|
||||
'link' => base_url('index.ci.php/system/infocenter/InfoCenter/infocenterFreigegeben'),
|
||||
'description' => 'Freigegeben',
|
||||
'icon' => 'thumbs-up'
|
||||
));
|
||||
|
||||
$config['navigation_menu']['system/infocenter/InfoCenter/infocenterFreigegeben'] = array(
|
||||
'Zurück' => array(
|
||||
'link' => base_url('index.ci.php/system/infocenter/InfoCenter/index'),
|
||||
'description' => 'Zurück',
|
||||
'icon' => 'angle-left'
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -22,20 +22,22 @@ class Phrase extends APIv1_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Loads the phrases library
|
||||
$this->load->library('PhrasesLib');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
public function getPhrase()
|
||||
{
|
||||
$phrase_id = $this->get('phrase_id');
|
||||
|
||||
|
||||
if (isset($phrase_id))
|
||||
{
|
||||
$result = $this->phraseslib->getPhrase($phrase_id);
|
||||
|
||||
|
||||
$this->response($result, REST_Controller::HTTP_OK);
|
||||
}
|
||||
else
|
||||
@@ -43,9 +45,9 @@ class Phrase extends APIv1_Controller
|
||||
$this->response();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
public function getPhrases()
|
||||
{
|
||||
@@ -55,11 +57,11 @@ class Phrase extends APIv1_Controller
|
||||
$orgeinheit_kurzbz = $this->get('orgeinheit_kurzbz');
|
||||
$orgform_kurzbz = $this->get('orgform_kurzbz');
|
||||
$blockTags = $this->get('blockTags');
|
||||
|
||||
|
||||
if (isset($app) && isset($sprache))
|
||||
{
|
||||
$result = $this->phraseslib->getPhrases($app, $sprache, $phrase, $orgeinheit_kurzbz, $orgform_kurzbz, $blockTags);
|
||||
|
||||
|
||||
$this->response($result, REST_Controller::HTTP_OK);
|
||||
}
|
||||
else
|
||||
@@ -69,7 +71,7 @@ class Phrase extends APIv1_Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
public function postPhrase()
|
||||
{
|
||||
@@ -83,7 +85,7 @@ class Phrase extends APIv1_Controller
|
||||
{
|
||||
$result = $this->PhraseModel->insert($this->post());
|
||||
}
|
||||
|
||||
|
||||
$this->response($result, REST_Controller::HTTP_OK);
|
||||
}
|
||||
else
|
||||
@@ -91,9 +93,12 @@ class Phrase extends APIv1_Controller
|
||||
$this->response();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _validate($phrase = null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,20 +10,23 @@ class Navigation extends VileSci_Controller
|
||||
const SESSION_NAME = 'NAVIGATION_MENU';
|
||||
|
||||
/**
|
||||
*
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->config->load('navigation');
|
||||
|
||||
// Load session library
|
||||
$this->load->library('session');
|
||||
}
|
||||
// Load session library
|
||||
$this->load->library('session');
|
||||
$this->load->library('ExtensionsLib');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This function creates the left Menu for each Page
|
||||
* @param navigation_widget_called GET Parameter witch holds the currently called Page
|
||||
* @return JSON object with the Menu Entries
|
||||
*/
|
||||
public function menu()
|
||||
{
|
||||
@@ -32,16 +35,33 @@ class Navigation extends VileSci_Controller
|
||||
|
||||
if (isset($navigation_widget_called))
|
||||
{
|
||||
// Get Menu Entries of the Core
|
||||
$navigationMenuArray = $this->config->item('navigation_menu');
|
||||
$json = $this->wildcardsearch($navigationMenuArray, $navigation_widget_called);
|
||||
|
||||
if (isset($navigationMenuArray) && is_array($navigationMenuArray))
|
||||
// Load Menu Entries of Extensions
|
||||
$extensions = $this->extensionslib->getInstalledExtensions();
|
||||
if(hasData($extensions))
|
||||
{
|
||||
if (isset($navigationMenuArray[$navigation_widget_called]))
|
||||
$json_extension = array();
|
||||
foreach($extensions->retval as $ext)
|
||||
{
|
||||
$json = $navigationMenuArray[$navigation_widget_called];
|
||||
$filename = APPPATH.'config/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$ext->name.'/navigation.php';
|
||||
if (file_exists($filename))
|
||||
{
|
||||
unset($config);
|
||||
include($filename);
|
||||
if(isset($config['navigation_menu']) && is_array($config['navigation_menu']))
|
||||
{
|
||||
$json_extension = array_merge_recursive($json_extension, $this->wildcardsearch($config['navigation_menu'], $navigation_widget_called));
|
||||
}
|
||||
}
|
||||
}
|
||||
// Merge Extension Menuentries with the Core Entries
|
||||
$json = array_merge_recursive($json, $json_extension);
|
||||
}
|
||||
|
||||
// Load dynamic Menu Entries from Session
|
||||
if (isset($_SESSION['navigation_menu']))
|
||||
{
|
||||
$navigationMenuSessionArray = $_SESSION['navigation_menu'];
|
||||
@@ -50,7 +70,7 @@ class Navigation extends VileSci_Controller
|
||||
{
|
||||
if (isset($navigationMenuSessionArray[$navigation_widget_called]))
|
||||
{
|
||||
$json = array_merge($json, $navigationMenuSessionArray[$navigation_widget_called]);
|
||||
$json = array_merge_recursive($json, $navigationMenuSessionArray[$navigation_widget_called]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -60,7 +80,9 @@ class Navigation extends VileSci_Controller
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This function creates the Top Menu for each Page
|
||||
* @param navigation_widget_called GET Parameter witch holds the currently called Page
|
||||
* @return JSON object with the Menu Entries
|
||||
*/
|
||||
public function header()
|
||||
{
|
||||
@@ -69,16 +91,32 @@ class Navigation extends VileSci_Controller
|
||||
|
||||
if (isset($navigation_widget_called))
|
||||
{
|
||||
// Load Header Entries of Core
|
||||
$navigationHeaderArray = $this->config->item('navigation_header');
|
||||
$json = $this->wildcardsearch($navigationHeaderArray, $navigation_widget_called);
|
||||
|
||||
if (isset($navigationHeaderArray) && is_array($navigationHeaderArray))
|
||||
// Load Header Entries of Extensions
|
||||
$extensions = $this->extensionslib->getInstalledExtensions();
|
||||
if(hasData($extensions))
|
||||
{
|
||||
if (isset($navigationHeaderArray[$navigation_widget_called]))
|
||||
$json_extension = array();
|
||||
foreach($extensions->retval as $ext)
|
||||
{
|
||||
$json = $navigationHeaderArray[$navigation_widget_called];
|
||||
$filename = APPPATH.'config/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$ext->name.'/navigation.php';
|
||||
if (file_exists($filename))
|
||||
{
|
||||
unset($config);
|
||||
include($filename);
|
||||
if(isset($config['navigation_header']) && is_array($config['navigation_header']))
|
||||
{
|
||||
$json_extension = array_merge_recursive($json_extension, $this->wildcardsearch($config['navigation_header'], $navigation_widget_called));
|
||||
}
|
||||
}
|
||||
}
|
||||
$json = array_merge_recursive($json, $json_extension);
|
||||
}
|
||||
|
||||
// Load dynamic Header Entries from Session
|
||||
if (isset($_SESSION['navigation_header']))
|
||||
{
|
||||
$navigationHeaderSessionArray = $_SESSION['navigation_header'];
|
||||
@@ -87,7 +125,8 @@ class Navigation extends VileSci_Controller
|
||||
{
|
||||
if (isset($navigationHeaderSessionArray[$navigation_widget_called]))
|
||||
{
|
||||
$json = array_merge($json, $navigationHeaderSessionArray[$navigation_widget_called]);
|
||||
$jsontmp = $this->wildcardsearch($navigationHeaderSessionArray, $navigation_widget_called);
|
||||
$json = array_merge_recursive($json, $jsontmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,4 +134,47 @@ class Navigation extends VileSci_Controller
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches a Menuentry. If there is no exact entry it searches for Wildcard Entries with a Star
|
||||
* Example:
|
||||
* Searching for /system/foo/index will Match the following Menuentries:
|
||||
* /system/foo/index
|
||||
* /system/foo/*
|
||||
* /system/*
|
||||
* *
|
||||
*
|
||||
* @param $navigationArray Array to Search in.
|
||||
* @param $navigation_widget_called Navigation to search for.
|
||||
* @return Navigation Array if found, empty array otherwise
|
||||
*/
|
||||
private function wildcardsearch($navigationArray, $navigation_widget_called)
|
||||
{
|
||||
// Sort Navigation to have them in correct order
|
||||
krsort($navigationArray);
|
||||
|
||||
// 100% match found
|
||||
if(isset($navigationArray[$navigation_widget_called]))
|
||||
{
|
||||
return $navigationArray[$navigation_widget_called];
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($navigationArray as $key=>$row)
|
||||
{
|
||||
// Search for * Entries
|
||||
if(mb_strpos($key, '*') === 0 || mb_strpos($key, '*') === mb_strlen($key) - 1)
|
||||
{
|
||||
// Take * Entry if Matches
|
||||
$search = mb_substr($key, 0, -1);
|
||||
if($search == '' || mb_strpos($navigation_widget_called, $search) === 0)
|
||||
{
|
||||
return $row;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,145 +1,174 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Phrases extends FHC_Controller
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
// Loads the phrases library
|
||||
$this->load->library('PhrasesLib');
|
||||
|
||||
|
||||
// Loads the widget library
|
||||
$this->load->library('WidgetLib');
|
||||
|
||||
|
||||
// Loads helper message to manage returning messages
|
||||
$this->load->helper('message');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('system/phrases.php');
|
||||
$this->load->view('system/phrases/phrases.php');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function table()
|
||||
{
|
||||
$phrases = $this->phraseslib->getPhraseByApp('aufnahme');
|
||||
if ($phrases->error)
|
||||
show_error($phrases->retval);
|
||||
//var_dump($vorlage);
|
||||
|
||||
$data = array
|
||||
(
|
||||
$data = array(
|
||||
'app' => 'aufnahme',
|
||||
'phrases' => $phrases->retval
|
||||
);
|
||||
$v = $this->load->view('system/phrasesList.php', $data);
|
||||
|
||||
$this->load->view('system/phrases/phrasesList.php', $data);
|
||||
}
|
||||
|
||||
public function view($phrase_id = null)
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function view($phrase_id)
|
||||
{
|
||||
if (empty($phrase_id))
|
||||
exit;
|
||||
$phrase_inhalt = $this->phraseslib->getPhraseInhalt($phrase_id);
|
||||
show_error('Invalid phrase_id parameter');
|
||||
|
||||
$phrase = $this->phraseslib->getPhrase($phrase_id);
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->getPhraseInhalt($phrase_id);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error($phrase_inhalt->retval);
|
||||
//var_dump($vorlage);
|
||||
|
||||
$data = array
|
||||
(
|
||||
$data = array(
|
||||
'phrase_id' => $phrase_id,
|
||||
'phrase' => $phrase->retval[0]->phrase,
|
||||
'phrase_inhalt' => $phrase_inhalt->retval
|
||||
);
|
||||
$v = $this->load->view('system/phrasesinhaltList.php', $data);
|
||||
|
||||
$this->load->view('system/phrases/phrasesinhaltList.php', $data);
|
||||
}
|
||||
|
||||
public function deltext($phrasentext_id=null, $phrase_id = null)
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function deltext($phrasentext_id, $phrase_id)
|
||||
{
|
||||
if (empty($phrase_id) or empty($phrasentext_id))
|
||||
exit;
|
||||
if (empty($phrasentext_id) || empty($phrase_id))
|
||||
show_error('Invalid phrasentext_id or phrase_id parameter');
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->delPhrasentext($phrasentext_id);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error($phrase_inhalt->retval);
|
||||
//var_dump($vorlage);
|
||||
|
||||
redirect('/system/Phrases/view/'.$phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function edit($phrase_id = null)
|
||||
{
|
||||
if (empty($phrase_id))
|
||||
exit;
|
||||
if (empty($phrase_id)) return;
|
||||
|
||||
$phrase = $this->phraseslib->getPhrase($phrase_id);
|
||||
//var_dump($vorlage);
|
||||
if ($phrase->error)
|
||||
show_error($phrase->retval);
|
||||
|
||||
if (count($phrase->retval) != 1)
|
||||
show_error('Phrase nicht vorhanden! ID: '.$phrase_id);
|
||||
|
||||
$data = array
|
||||
(
|
||||
$data = array(
|
||||
'phrase' => $phrase->retval[0]
|
||||
);
|
||||
//var_dump($data['message']);
|
||||
$v = $this->load->view('system/phrasesEdit', $data);
|
||||
|
||||
$this->load->view('system/phrases/phrasesEdit', $data);
|
||||
}
|
||||
|
||||
public function write($vorlage_kurzbz = null)
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function write()
|
||||
{
|
||||
$data = array
|
||||
(
|
||||
$data = array(
|
||||
'subject' => 'TestSubject',
|
||||
'body' => 'TestDevelopmentBodyText'
|
||||
);
|
||||
$v = $this->load->view('system/messageWrite', $data);
|
||||
|
||||
$this->load->view('system/messageWrite', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$phrase_id = $this->input->post('phrase_id');
|
||||
$data['phrase'] = $this->input->post('phrase');
|
||||
$data = array('phrase' => $this->input->post('phrase'));
|
||||
|
||||
$phrase = $this->phraseslib->savePhrase($phrase_id, $data);
|
||||
if ($phrase->error)
|
||||
show_error($phrase->retval);
|
||||
|
||||
$phrase_id = $phrase->retval;
|
||||
|
||||
redirect('/system/Phrases/edit/'.$phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function newText()
|
||||
{
|
||||
$phrase_id = $this->input->post('phrase_id');
|
||||
|
||||
|
||||
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
|
||||
|
||||
$this->OrganisationseinheitModel->addLimit(1);
|
||||
$this->OrganisationseinheitModel->addOrder('oe_kurzbz');
|
||||
|
||||
$resultOE = $this->OrganisationseinheitModel->loadWhere(array('aktiv' => true, 'oe_parent_kurzbz' => null));
|
||||
|
||||
if ($resultOE->error)
|
||||
show_error($resultOE->retval);
|
||||
|
||||
|
||||
if (hasData($resultOE))
|
||||
{
|
||||
$orgeinheit_kurzbz = $resultOE->retval[0]->oe_kurzbz;
|
||||
|
||||
$data = array (
|
||||
|
||||
$data = array(
|
||||
'phrase_id' => $phrase_id,
|
||||
'sprache' => 'German',
|
||||
'text' => '',
|
||||
'description' => '',
|
||||
'orgeinheit_kurzbz' => $orgeinheit_kurzbz
|
||||
);
|
||||
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->insertPhraseinhalt($data);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error($phrase_inhalt->retval);
|
||||
|
||||
|
||||
$phrase_inhalt_id = $phrase_inhalt->retval;
|
||||
|
||||
|
||||
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
|
||||
}
|
||||
else
|
||||
@@ -148,30 +177,40 @@ class Phrases extends FHC_Controller
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function editText($phrasentext_id)
|
||||
{
|
||||
$phrase_inhalt = $this->phraseslib->getPhrasentextById($phrasentext_id);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error($phrase_inhalt->retval);
|
||||
|
||||
$data = $phrase_inhalt->retval[0];
|
||||
|
||||
$this->load->view('system/phraseinhaltEdit', $data);
|
||||
$this->load->view('system/phrases/phraseinhaltEdit', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function saveText()
|
||||
{
|
||||
$phrase_inhalt_id = $this->input->post('phrase_inhalt_id');
|
||||
$data['orgeinheit_kurzbz'] = $this->input->post('oe_kurzbz');
|
||||
$data['orgform_kurzbz'] = $this->input->post('orgform_kurzbz');
|
||||
$data['text'] = $this->input->post('text');
|
||||
$data['description'] = $this->input->post('description');
|
||||
$data['sprache'] = $this->input->post('sprache');
|
||||
|
||||
$data = array(
|
||||
'orgeinheit_kurzbz' => $this->input->post('oe_kurzbz'),
|
||||
'orgform_kurzbz' => $this->input->post('orgform_kurzbz'),
|
||||
'text' => $this->input->post('text'),
|
||||
'description' => $this->input->post('description'),
|
||||
'sprache' => $this->input->post('sprache')
|
||||
);
|
||||
|
||||
$phrase_inhalt = $this->phraseslib->updatePhraseInhalt($phrase_inhalt_id, $data);
|
||||
if ($phrase_inhalt->error)
|
||||
show_error($phrase_inhalt->retval);
|
||||
$data['phrase_inhalt_id'] = $phrase_inhalt_id;
|
||||
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
|
||||
//$this->load->view('system/templatetextEdit', $data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,11 @@ class InfoCenter extends VileSci_Controller
|
||||
'logtype' => 'Action',
|
||||
'name' => 'Note added',
|
||||
'message' => 'Note with title %s was added'
|
||||
),
|
||||
'updatenotiz' => array(
|
||||
'logtype' => 'Action',
|
||||
'name' => 'Note updated',
|
||||
'message' => 'Note with title %s was updated'
|
||||
)
|
||||
);
|
||||
private $uid; // contains the UID of the logged user
|
||||
@@ -88,7 +93,12 @@ class InfoCenter extends VileSci_Controller
|
||||
{
|
||||
$this->load->view('system/infocenter/infocenter.php');
|
||||
}
|
||||
|
||||
|
||||
public function infocenterFreigegeben()
|
||||
{
|
||||
$this->load->view('system/infocenter/infocenterFreigegeben.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialization function, gets person and prestudent data and loads the view with the data
|
||||
* @param $person_id
|
||||
@@ -122,7 +132,7 @@ class InfoCenter extends VileSci_Controller
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* unlocks page from edit by a person, redirects to overview filter page
|
||||
* @param $person_id
|
||||
@@ -352,7 +362,7 @@ class InfoCenter extends VileSci_Controller
|
||||
|
||||
$this->_redirectToStart($prestudent_id, 'ZgvPruef');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Saves a new Notiz for a person
|
||||
* @param $person_id
|
||||
@@ -376,6 +386,44 @@ class InfoCenter extends VileSci_Controller
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($result->retval));
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a new Notiz for a person
|
||||
* @param int $notiz_id
|
||||
* @param int $person_id
|
||||
* @return bool true if success
|
||||
*/
|
||||
public function updateNotiz($notiz_id, $person_id)
|
||||
{
|
||||
$titel = $this->input->post('notiztitel');
|
||||
$text = $this->input->post('notiz');
|
||||
|
||||
$result = $this->NotizModel->update(
|
||||
$notiz_id,
|
||||
array(
|
||||
'titel' => $titel,
|
||||
'text' => $text,
|
||||
'verfasser_uid' => $this->uid,
|
||||
"updateamum" => 'NOW()',
|
||||
"updatevon" => $this->uid
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$json = FALSE;
|
||||
|
||||
if (isSuccess($result))
|
||||
{
|
||||
$json = TRUE;
|
||||
|
||||
//set log "Notiz updated"
|
||||
$this->_log($person_id, 'updatenotiz', array($titel));
|
||||
}
|
||||
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Notizen view for a person, helper for reloading after ajax request
|
||||
@@ -499,7 +547,7 @@ class InfoCenter extends VileSci_Controller
|
||||
'children' => array()
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$this->_fillFilters($listFiltersSent, $filtersarray['abgeschickt']);
|
||||
$this->_fillFilters($listFiltersNotSent, $filtersarray['nichtabgeschickt']);
|
||||
|
||||
@@ -547,7 +595,7 @@ class InfoCenter extends VileSci_Controller
|
||||
{
|
||||
$toPrint = "%s=%s";
|
||||
$tofill['children'][] = array(
|
||||
'link' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filter_id'), $filterId),
|
||||
'link' => sprintf($toPrint, site_url('system/infocenter/InfoCenter?filter_id'), $filterId),
|
||||
'description' => $description
|
||||
);
|
||||
}
|
||||
@@ -559,13 +607,8 @@ class InfoCenter extends VileSci_Controller
|
||||
{
|
||||
$toPrint = "%s=%s";
|
||||
|
||||
if ($this->router->method != 'index')
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
$tofill['children'][] = array(
|
||||
'link' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filter_id'), $filterId),
|
||||
'link' => sprintf($toPrint, site_url('system/infocenter/InfoCenter?filter_id'), $filterId),
|
||||
'description' => $description,
|
||||
'subscriptDescription' => 'Remove',
|
||||
'subscriptLinkClass' => 'remove-filter',
|
||||
|
||||
@@ -10,7 +10,17 @@ class FHC_Controller extends CI_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
$this->load->helper('fhcauth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper to load phrases using the PhrasesLib
|
||||
* NOTE: The library is loaded with the alias 'p', so must me used with this alias in the rest of the code.
|
||||
* EX: $this->p->t(<category>, <phrase name>)
|
||||
*/
|
||||
public function loadPhrases($categories, $language = null)
|
||||
{
|
||||
$this->load->library('PhrasesLib', array($categories, $language), 'p');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,17 @@ class ExtensionsLib
|
||||
const EXTENSION_JSON_NAME = 'extension.json'; // file that contains extension data
|
||||
const EXTENSIONS_DIR_NAME = 'extensions'; // name of the directories where will be created the symlinks
|
||||
|
||||
private $_ci;
|
||||
|
||||
private $ARCHIVE_EXTENSIONS = array('.tgz', '.tbz2'); // accepted file extensions for an uploaded extension
|
||||
private $UPLOAD_PATH; // temporary directory to store the upload file and checks the archive
|
||||
private $EXTENSIONS_PATH; // directory where all the extensions are
|
||||
|
||||
// Directories that are part of the extension archive
|
||||
private $SOFTLINK_TARGET_DIRECTORIES = array('config', 'controllers', 'helpers', 'hooks', 'libraries', 'models', 'views', 'widgets');
|
||||
private $SOFTLINK_TARGET_DIRECTORIES = array(
|
||||
APPPATH => array('config', 'controllers', 'helpers', 'hooks', 'libraries', 'models', 'views', 'widgets'),
|
||||
DOC_ROOT => array('public')
|
||||
);
|
||||
|
||||
private $_errorOccurred; // boolean, true if an error occurred while installing an extension
|
||||
private $_currentInstalledExtensionVersion; // contains the version of the current installation of an extension
|
||||
@@ -33,16 +38,16 @@ class ExtensionsLib
|
||||
$this->UPLOAD_PATH = APPPATH.'tmp/';
|
||||
$this->EXTENSIONS_PATH = APPPATH.'extensions/';
|
||||
// Get code igniter instance
|
||||
$this->ci =& get_instance();
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
// Loads message configurationx
|
||||
$this->ci->config->load('message');
|
||||
$this->_ci->config->load('message');
|
||||
|
||||
// Loads EPrintfLib
|
||||
$this->ci->load->library('EPrintfLib');
|
||||
$this->_ci->load->library('EPrintfLib');
|
||||
|
||||
// Loading models
|
||||
$this->ci->load->model('system/Extensions_model', 'ExtensionsModel');
|
||||
$this->_ci->load->model('system/Extensions_model', 'ExtensionsModel');
|
||||
|
||||
// Set default values fot class properties
|
||||
$this->_errorOccurred = false;
|
||||
@@ -153,7 +158,7 @@ class ExtensionsLib
|
||||
$delExtension = false;
|
||||
|
||||
// Loads data about this extension from the DB
|
||||
$result = $this->ci->ExtensionsModel->load($extensionId);
|
||||
$result = $this->_ci->ExtensionsModel->load($extensionId);
|
||||
if (hasData($result)) // if something was found
|
||||
{
|
||||
$extensionName = $result->retval[0]->name; // extension name
|
||||
@@ -162,15 +167,15 @@ class ExtensionsLib
|
||||
$delExtension = $this->_rrm($this->EXTENSIONS_PATH.$extensionName);
|
||||
|
||||
// Select all the version of this extension
|
||||
$this->ci->ExtensionsModel->addSelect('extension_id');
|
||||
$result = $this->ci->ExtensionsModel->loadWhere(array('name' => $extensionName));
|
||||
$this->_ci->ExtensionsModel->addSelect('extension_id');
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(array('name' => $extensionName));
|
||||
if (hasData($result)) // if something was found
|
||||
{
|
||||
$extsArray = array();
|
||||
foreach ($result->retval as $key => $extension) // loops on them
|
||||
{
|
||||
// Remove them all
|
||||
$result = $this->ci->ExtensionsModel->delete($extension->extension_id);
|
||||
$result = $this->_ci->ExtensionsModel->delete($extension->extension_id);
|
||||
if (isSuccess($result))
|
||||
{
|
||||
$delExtension = true;
|
||||
@@ -187,7 +192,7 @@ class ExtensionsLib
|
||||
*/
|
||||
public function getInstalledExtensions()
|
||||
{
|
||||
return $this->ci->ExtensionsModel->getInstalledExtensions();
|
||||
return $this->_ci->ExtensionsModel->getInstalledExtensions();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -214,7 +219,7 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _loadUploadLibrary()
|
||||
{
|
||||
$this->ci->load->library(
|
||||
$this->_ci->load->library(
|
||||
'upload',
|
||||
array(
|
||||
'upload_path' => $this->UPLOAD_PATH,
|
||||
@@ -234,9 +239,9 @@ class ExtensionsLib
|
||||
$this->_printStart('Uploading extension');
|
||||
|
||||
// If the upload was a success
|
||||
if ($this->ci->upload->do_upload(ExtensionsLib::FILE_INPUT_NAME))
|
||||
if ($this->_ci->upload->do_upload(ExtensionsLib::FILE_INPUT_NAME))
|
||||
{
|
||||
$uploadData = $this->ci->upload->data(); // retrives data about the uploaded file
|
||||
$uploadData = $this->_ci->upload->data(); // retrives data about the uploaded file
|
||||
// Checks the file extension
|
||||
$uploadedFileExtension = '.'.pathinfo($uploadData['full_path'], PATHINFO_EXTENSION);
|
||||
if (!in_array($uploadedFileExtension, $this->ARCHIVE_EXTENSIONS))
|
||||
@@ -259,7 +264,7 @@ class ExtensionsLib
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_printFailure($this->ci->upload->display_errors('', ''));
|
||||
$this->_printFailure($this->_ci->upload->display_errors('', ''));
|
||||
}
|
||||
|
||||
$this->_printSuccess($_uploadExtension != null);
|
||||
@@ -309,9 +314,9 @@ class ExtensionsLib
|
||||
$this->_printStart('Loads any previous installation data');
|
||||
|
||||
// Loads the last version of the previous installation of this extension
|
||||
$this->ci->ExtensionsModel->addOrder('version', 'DESC');
|
||||
$this->ci->ExtensionsModel->addLimit(1);
|
||||
$result = $this->ci->ExtensionsModel->loadWhere(array('name' => $extensionName));
|
||||
$this->_ci->ExtensionsModel->addOrder('version', 'DESC');
|
||||
$this->_ci->ExtensionsModel->addLimit(1);
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(array('name' => $extensionName));
|
||||
if (isError($result))
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
@@ -428,7 +433,7 @@ class ExtensionsLib
|
||||
&& count($extensionJson->dependencies) > 0)
|
||||
{
|
||||
// Gets the required dependencies
|
||||
$result = $this->ci->ExtensionsModel->getDependencies($extensionJson->dependencies);
|
||||
$result = $this->_ci->ExtensionsModel->getDependencies($extensionJson->dependencies);
|
||||
// If they are matcheds
|
||||
if (hasData($result) && count($result->retval) == count($extensionJson->dependencies))
|
||||
{
|
||||
@@ -525,7 +530,7 @@ class ExtensionsLib
|
||||
{
|
||||
$this->_printStart('Adding new entry in the DB');
|
||||
|
||||
$result = $this->ci->ExtensionsModel->insert(
|
||||
$result = $this->_ci->ExtensionsModel->insert(
|
||||
array(
|
||||
'name' => $extensionJson->name,
|
||||
'description' => isset($extensionJson->description) ? $extensionJson->description : null,
|
||||
@@ -581,7 +586,7 @@ class ExtensionsLib
|
||||
$this->_printMessage($sql);
|
||||
|
||||
// Try to execute that
|
||||
if (!isSuccess($result = @$this->ci->ExtensionsModel->executeQuery($sql)))
|
||||
if (!isSuccess($result = @$this->_ci->ExtensionsModel->executeQuery($sql)))
|
||||
{
|
||||
$this->_errorOccurred = true;
|
||||
$this->_printFailure(' error occurred while executing the query');
|
||||
@@ -592,7 +597,7 @@ class ExtensionsLib
|
||||
{
|
||||
$this->_printMessage('Query result:');
|
||||
var_dump($result->retval); // KEEP IT!!!
|
||||
$this->ci->eprintflib->printEOL();
|
||||
$this->_ci->eprintflib->printEOL();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -654,11 +659,14 @@ class ExtensionsLib
|
||||
{
|
||||
$_delSoftLinks = false;
|
||||
|
||||
foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory)
|
||||
foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $rootPath => $targetDirectories)
|
||||
{
|
||||
if (file_exists(APPPATH.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName))
|
||||
foreach ($targetDirectories as $key => $targetDirectory)
|
||||
{
|
||||
$_delSoftLinks = unlink(APPPATH.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName);
|
||||
if (file_exists($rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName))
|
||||
{
|
||||
$_delSoftLinks = unlink($rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -705,25 +713,29 @@ class ExtensionsLib
|
||||
$extensionPath = $this->EXTENSIONS_PATH.$extensionName.'/';
|
||||
|
||||
// For every target directory
|
||||
foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory)
|
||||
foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $rootPath => $targetDirectories)
|
||||
{
|
||||
// If destination of the symlink does not exist
|
||||
if (!file_exists(APPPATH.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName))
|
||||
foreach ($targetDirectories as $key => $targetDirectory)
|
||||
{
|
||||
// If the target directory does not exist than creates that
|
||||
if (!is_dir($extensionPath.$targetDirectory))
|
||||
// If destination of the symlink does not exist
|
||||
if (!file_exists($rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName))
|
||||
{
|
||||
mkdir($extensionPath.$targetDirectory);
|
||||
}
|
||||
// If the target directory does not exist than creates that
|
||||
if (!is_dir($extensionPath.$targetDirectory))
|
||||
{
|
||||
mkdir($extensionPath.$targetDirectory);
|
||||
}
|
||||
|
||||
// Create the symlink
|
||||
$_addSoftLinks = symlink(
|
||||
$extensionPath.$targetDirectory,
|
||||
APPPATH.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName
|
||||
);
|
||||
if (!$_addSoftLinks)
|
||||
{
|
||||
break;
|
||||
// Create the symlink
|
||||
$_addSoftLinks = symlink(
|
||||
$extensionPath.$targetDirectory,
|
||||
$rootPath.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName
|
||||
);
|
||||
if (!$_addSoftLinks)
|
||||
{
|
||||
log_message('error','Failed to create Symlink to '.$extensionPath.$targetDirectory);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -757,13 +769,13 @@ class ExtensionsLib
|
||||
if ($uploadData != null && isset($uploadData->extensionName) && $extensionDB == null)
|
||||
{
|
||||
// Loads all the previous installations of this extension
|
||||
$this->ci->ExtensionsModel->addOrder('version', 'DESC');
|
||||
$this->ci->ExtensionsModel->addLimit(1);
|
||||
$result = $this->ci->ExtensionsModel->loadWhere(array('name' => $uploadData->extensionName));
|
||||
$this->_ci->ExtensionsModel->addOrder('version', 'DESC');
|
||||
$this->_ci->ExtensionsModel->addLimit(1);
|
||||
$result = $this->_ci->ExtensionsModel->loadWhere(array('name' => $uploadData->extensionName));
|
||||
if (hasData($result)) // if found
|
||||
{
|
||||
// Remove them all from file system and DB
|
||||
$this->_printMessage('Removing entries in the DB related to this extension');
|
||||
$this->_printMessage('Removing entries in the DB related to this extension and from extensions directory');
|
||||
$this->delExtension($result->retval[0]->extension_id);
|
||||
}
|
||||
}
|
||||
@@ -772,7 +784,7 @@ class ExtensionsLib
|
||||
// Remove them all only from DB
|
||||
if ($extensionJson != null && isset($extensionJson->extension_id))
|
||||
{
|
||||
$this->ci->ExtensionsModel->delete($extensionJson->extension_id);
|
||||
$this->_ci->ExtensionsModel->delete($extensionJson->extension_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -789,7 +801,7 @@ class ExtensionsLib
|
||||
$_toggleExtension = false;
|
||||
|
||||
// Loads data from DB about the given extension
|
||||
$result = $this->ci->ExtensionsModel->load($extensionId);
|
||||
$result = $this->_ci->ExtensionsModel->load($extensionId);
|
||||
if (hasData($result))
|
||||
{
|
||||
$extensionName = $result->retval[0]->name; // extension name
|
||||
@@ -809,7 +821,7 @@ class ExtensionsLib
|
||||
if ($_toggleExtension) // if is a success
|
||||
{
|
||||
// Updates DB
|
||||
$result = $this->ci->ExtensionsModel->update($extensionId, array('enabled' => $enabled));
|
||||
$result = $this->_ci->ExtensionsModel->update($extensionId, array('enabled' => $enabled));
|
||||
if (isSuccess($result))
|
||||
{
|
||||
$_toggleExtension = true;
|
||||
@@ -829,7 +841,7 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _printError($error)
|
||||
{
|
||||
$this->ci->eprintflib->printError($error);
|
||||
$this->_ci->eprintflib->printError($error);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -845,7 +857,7 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _printMessage($message)
|
||||
{
|
||||
$this->ci->eprintflib->printMessage($message);
|
||||
$this->_ci->eprintflib->printMessage($message);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -864,7 +876,7 @@ class ExtensionsLib
|
||||
*/
|
||||
private function _printInfo($info)
|
||||
{
|
||||
$this->ci->eprintflib->printInfo($info);
|
||||
$this->_ci->eprintflib->printInfo($info);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,38 +4,40 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class PhrasesLib
|
||||
{
|
||||
private $_ci; // Code igniter instance
|
||||
private $_phrases; // Contains the retrived phrases
|
||||
|
||||
/**
|
||||
* Loads parser library
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//require_once APPPATH.'config/message.php';
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
$this->ci =& get_instance();
|
||||
// CI parser
|
||||
$this->_ci->load->library('parser');
|
||||
|
||||
// Loads message configuration
|
||||
$this->ci->config->load('message');
|
||||
|
||||
$this->ci->load->library('parser');
|
||||
|
||||
$this->ci->load->model('system/Phrase_model', 'PhraseModel');
|
||||
$this->ci->load->model('system/Phrasentext_model', 'PhrasentextModel');
|
||||
$this->_ci->load->model('system/Phrase_model', 'PhraseModel');
|
||||
$this->_ci->load->model('system/Phrasentext_model', 'PhrasentextModel');
|
||||
|
||||
$this->ci->load->helper('language');
|
||||
// Loads helper message to manage returning messages
|
||||
$this->ci->load->helper('message');
|
||||
$this->_ci->load->helper('message');
|
||||
|
||||
// Workaround to use more parameters in the construct since PHP doesn't support many constructors
|
||||
$this->_extend_construct(func_get_args());
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* getPhrase() - will load a spezific Phrase
|
||||
* getPhrase() - loads a specific Phrase
|
||||
*/
|
||||
public function getPhrase($phrase_id)
|
||||
{
|
||||
if (empty($phrase_id))
|
||||
return error(MSG_ERR_INVALID_MSG_ID);
|
||||
if (empty($phrase_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
$phrase = $this->ci->PhraseModel->load($phrase_id);
|
||||
return $phrase;
|
||||
return $this->_ci->PhraseModel->load($phrase_id);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -43,8 +45,7 @@ class PhrasesLib
|
||||
*/
|
||||
public function getPhraseByApp($app = null)
|
||||
{
|
||||
$phrases = $this->ci->PhraseModel->loadWhere(array('app' => $app));
|
||||
return $phrases;
|
||||
return $this->_ci->PhraseModel->loadWhere(array('app' => $app));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,11 +53,9 @@ class PhrasesLib
|
||||
*/
|
||||
public function getPhraseInhalt($phrase_id)
|
||||
{
|
||||
if (empty($phrase_id))
|
||||
return error(MSG_ERR_INVALID_MSG_ID);
|
||||
if (empty($phrase_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
$phrasentext = $this->ci->PhrasentextModel->loadWhere(array('phrase_id' => $phrase_id));
|
||||
return $phrasentext;
|
||||
return $this->_ci->PhrasentextModel->loadWhere(array('phrase_id' => $phrase_id));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,11 +63,9 @@ class PhrasesLib
|
||||
*/
|
||||
public function delPhrasentext($phrasentext_id)
|
||||
{
|
||||
if (empty($phrasentext_id))
|
||||
return error(MSG_ERR_INVALID_MSG_ID);
|
||||
if (empty($phrasentext_id)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
$phrasentext = $this->ci->PhrasentextModel->delete(array('phrasentext_id' => $phrasentext_id));
|
||||
return $phrasentext;
|
||||
return $this->_ci->PhrasentextModel->delete(array('phrasentext_id' => $phrasentext_id));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,11 +73,9 @@ class PhrasesLib
|
||||
*/
|
||||
public function savePhrase($phrase_id, $data)
|
||||
{
|
||||
if (empty($data))
|
||||
return error(MSG_ERR_INVALID_MSG_ID);
|
||||
if (empty($data)) return error(MSG_ERR_INVALID_MSG_ID);
|
||||
|
||||
$phrase = $this->ci->PhraseModel->update($phrase_id, $data);
|
||||
return $phrase;
|
||||
return $this->_ci->PhraseModel->update($phrase_id, $data);
|
||||
}
|
||||
|
||||
|
||||
@@ -90,32 +85,33 @@ class PhrasesLib
|
||||
public function getPhrasentextById($phrasentext_id)
|
||||
{
|
||||
if (empty($phrasentext_id))
|
||||
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
|
||||
return error($this->_ci->lang->line('fhc_'.FHC_INVALIDID, false));
|
||||
|
||||
$phrasentext = $this->ci->PhrasentextModel->load($phrasentext_id);
|
||||
return $phrasentext;
|
||||
return $this->_ci->PhrasentextModel->load($phrasentext_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* getPhrases()
|
||||
* getPhrases() - Retrives phrases from the DB
|
||||
* The given parameter are the same needed to read from the table system.tb_phrase
|
||||
*/
|
||||
public function getPhrases($app, $sprache, $phrase = null, $orgeinheit_kurzbz = null, $orgform_kurzbz = null, $blockTags = null)
|
||||
{
|
||||
if (isset($app) && isset($sprache))
|
||||
{
|
||||
$result = $this->ci->PhraseModel->getPhrases($app, $sprache, $phrase, $orgeinheit_kurzbz, $orgform_kurzbz);
|
||||
|
||||
$result = $this->_ci->PhraseModel->getPhrases($app, $sprache, $phrase, $orgeinheit_kurzbz, $orgform_kurzbz);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$parser = new \Netcarver\Textile\Parser();
|
||||
|
||||
// Textile parser
|
||||
$textileParser = new \Netcarver\Textile\Parser();
|
||||
|
||||
for ($i = 0; $i < count($result->retval); $i++)
|
||||
{
|
||||
// If no <p> tags required
|
||||
if ($blockTags == 'no')
|
||||
{
|
||||
$tmpText = $parser->textileThis($result->retval[$i]->text); // Parse
|
||||
|
||||
$tmpText = $textileParser->textileThis($result->retval[$i]->text); // Parse
|
||||
|
||||
// Removes tags <p> and </p> from the beginning and from the end of the string if they are present
|
||||
// NOTE: Those tags are usually, but not always, added by the textile parser
|
||||
if (strlen($tmpText) >= 7)
|
||||
@@ -129,12 +125,12 @@ class PhrasesLib
|
||||
$tmpText = substr($tmpText, 0, strlen($tmpText) - 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$result->retval[$i]->text = $tmpText;
|
||||
}
|
||||
else
|
||||
{
|
||||
$result->retval[$i]->text = $parser->textileThis($result->retval[$i]->text);
|
||||
$result->retval[$i]->text = $textileParser->textileThis($result->retval[$i]->text);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -152,8 +148,7 @@ class PhrasesLib
|
||||
*/
|
||||
public function insertPhraseinhalt($data)
|
||||
{
|
||||
$phrasentext = $this->ci->PhrasentextModel->insert($data);
|
||||
return $phrasentext;
|
||||
return $this->_ci->PhrasentextModel->insert($data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -161,8 +156,7 @@ class PhrasesLib
|
||||
*/
|
||||
public function getVorlagetextById($vorlagestudiengang_id)
|
||||
{
|
||||
$vorlagetext = $this->ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
|
||||
return $vorlagetext;
|
||||
return $this->_ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,8 +164,7 @@ class PhrasesLib
|
||||
*/
|
||||
public function updatePhraseInhalt($phrasentext_id, $data)
|
||||
{
|
||||
$phrasentext = $this->ci->PhrasentextModel->update($phrasentext_id, $data);
|
||||
return $phrasentext;
|
||||
return $this->_ci->PhrasentextModel->update($phrasentext_id, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -180,8 +173,84 @@ class PhrasesLib
|
||||
public function parseVorlagetext($text, $data = array())
|
||||
{
|
||||
if (empty($text))
|
||||
return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
|
||||
$text = $this->ci->parser->parse_string($text, $data, true);
|
||||
return $text;
|
||||
return error($this->_ci->lang->line('fhc_'.FHC_INVALIDID, false));
|
||||
|
||||
return $this->_ci->parser->parse_string($text, $data, true);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null)
|
||||
{
|
||||
if (isset($this->_phrases) && is_array($this->_phrases))
|
||||
{
|
||||
for ($i = 0; $i < count($this->_phrases); $i++)
|
||||
{
|
||||
$_phrase = $this->_phrases[$i];
|
||||
|
||||
if ($_phrase->category == $category
|
||||
&& $_phrase->phrase == $phrase
|
||||
&& $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz
|
||||
&& $_phrase->orgform_kurzbz== $orgform_kurzbz)
|
||||
{
|
||||
if ($parameters == null) $parameters = array();
|
||||
|
||||
echo $this->_ci->parser->parse_string($_phrase->text, $parameters, true)."\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Extends the functionalities of the constructor of this class
|
||||
* This is a workaround to use more parameters in the construct since PHP doesn't support many constructors
|
||||
* The new accepted parameters are:
|
||||
* - categories: could be a string or an array of strings. These are the categories used to load phrases
|
||||
* - language: optional parameter must be a string. It's used to load phrases
|
||||
*/
|
||||
private function _extend_construct($params)
|
||||
{
|
||||
// Checks if the $params is an array with at least one element
|
||||
if (is_array($params) && count($params) > 0)
|
||||
{
|
||||
$parameters = $params[0]; // temporary variable
|
||||
|
||||
// If there are parameters
|
||||
if (is_array($parameters) && count($parameters) > 0)
|
||||
{
|
||||
$categories = $parameters[0]; // categories is always the first parameter
|
||||
if (!is_array($categories)) // if it is not an array, then convert into one
|
||||
{
|
||||
$categories = array($categories);
|
||||
}
|
||||
|
||||
// Use the given language if present, otherwise retrives the language for the logged user
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
if (count($parameters) == 2 && !empty($parameters[1]) && is_string($parameters[1]))
|
||||
{
|
||||
$language = $parameters[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_ci->load->model('person/Person_model', 'PersonModel');
|
||||
|
||||
$language = $this->_ci->PersonModel->getLanguage(getAuthUID());
|
||||
}
|
||||
|
||||
// Loads phrases
|
||||
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language);
|
||||
|
||||
// If there are phrases loaded then store them in the property _phrases
|
||||
if (hasData($phrases))
|
||||
{
|
||||
$this->_phrases = $phrases->retval;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,20 @@ class Konto_model extends DB_Model
|
||||
$this->dbTable = 'wawi.tbl_konto';
|
||||
$this->pk = 'konto_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all Konten connected for a Kostenstelle
|
||||
* @param $kostenstelle_id
|
||||
* @return array
|
||||
*/
|
||||
public function getKontenForKostenstelle($kostenstelle_id)
|
||||
{
|
||||
$this->addJoin('wawi.tbl_konto_kostenstelle', 'konto_id');
|
||||
$konten = $this->loadWhere(array('kostenstelle_id' => $kostenstelle_id));
|
||||
|
||||
if ($konten->error)
|
||||
return error($konten->retval);
|
||||
|
||||
return $konten;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,52 @@ class Kostenstelle_model extends DB_Model
|
||||
$this->dbTable = 'wawi.tbl_kostenstelle';
|
||||
$this->pk = 'kostenstelle_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields
|
||||
* Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
|
||||
* Only the Kostenstellen for which a permission exists are returned!
|
||||
* @param $geschaeftsjahr
|
||||
* @return array|null
|
||||
*/
|
||||
public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null)
|
||||
{
|
||||
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
|
||||
|
||||
if ($geschaeftsjahr === null)
|
||||
{
|
||||
$lgj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr();
|
||||
|
||||
if ($lgj->error)
|
||||
return error($lgj->retval);
|
||||
|
||||
if (count($lgj->retval) < 1)
|
||||
return success(array());
|
||||
|
||||
$geschaeftsjahr = $lgj->retval[0]->geschaeftsjahr_kurzbz;
|
||||
}
|
||||
|
||||
$this->GeschaeftsjahrModel->addSelect('start, ende');
|
||||
$gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr);
|
||||
|
||||
if ($gj->error)
|
||||
return error($gj->retval);
|
||||
|
||||
if (count($gj->retval) < 1)
|
||||
return success(array());
|
||||
|
||||
$gjstart = $gj->retval[0]->start;
|
||||
|
||||
$query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv
|
||||
FROM wawi.tbl_kostenstelle
|
||||
LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz
|
||||
LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz
|
||||
WHERE
|
||||
(DATE ? >= kgjvon.start OR wawi.tbl_kostenstelle.geschaeftsjahrvon IS NULL)
|
||||
AND
|
||||
(DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL)
|
||||
ORDER BY wawi.tbl_kostenstelle.bezeichnung';
|
||||
|
||||
return $this->execQuery($query, array($gjstart, $gjstart));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,33 @@ class Geschaeftsjahr_model extends DB_Model
|
||||
$this->dbTable = 'public.tbl_geschaeftsjahr';
|
||||
$this->pk = 'geschaeftsjahr_kurzbz';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets current Geschaeftsjahr, as determined by its start date
|
||||
* @return array|null
|
||||
*/
|
||||
public function getCurrGeschaeftsjahr()
|
||||
{
|
||||
$query = 'SELECT *
|
||||
FROM public.tbl_geschaeftsjahr
|
||||
WHERE start <= now()
|
||||
AND ende >= now()';
|
||||
|
||||
return $this->execQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets next Geschaeftsjahr, as determined by its start date
|
||||
* @return array|null
|
||||
*/
|
||||
public function getNextGeschaeftsjahr()
|
||||
{
|
||||
$query = 'SELECT *
|
||||
FROM public.tbl_geschaeftsjahr
|
||||
WHERE start > now()
|
||||
ORDER BY start
|
||||
LIMIT 1';
|
||||
|
||||
return $this->execQuery($query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,10 +111,13 @@ class Person_model extends DB_Model
|
||||
|
||||
$this->addJoin('public.tbl_prestudent', 'person_id');
|
||||
|
||||
$this->addJoin('public.tbl_benutzer', 'person_id');
|
||||
|
||||
$result = $this->loadTree(
|
||||
'public.tbl_person',
|
||||
array(
|
||||
'public.tbl_prestudent'
|
||||
'public.tbl_prestudent',
|
||||
'public.tbl_benutzer'
|
||||
),
|
||||
'EXISTS (
|
||||
SELECT
|
||||
@@ -129,7 +132,8 @@ class Person_model extends DB_Model
|
||||
AND datum <= '.$this->escape($bis).'
|
||||
)',
|
||||
array(
|
||||
'prestudenten'
|
||||
'prestudenten',
|
||||
'benutzer'
|
||||
)
|
||||
);
|
||||
|
||||
@@ -209,4 +213,37 @@ class Person_model extends DB_Model
|
||||
|
||||
return $this->loadWhere(array('uid' => $uid));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrives the language of the user by the UID
|
||||
* Gets all the persons related to the given UID and starting from the most recent person in DB
|
||||
* tries to find a valid language (!= null), if found is returned, otherwise is returned the
|
||||
* default global language of the system
|
||||
*/
|
||||
public function getLanguage($uid)
|
||||
{
|
||||
$language = DEFAULT_LANGUAGE;
|
||||
|
||||
$this->addJoin('public.tbl_benutzer', 'person_id');
|
||||
$this->addOrder('public.tbl_person.updateamum', 'DESC');
|
||||
$this->addOrder('public.tbl_person.insertvon', 'DESC');
|
||||
|
||||
$persons = $this->loadWhere(array('uid' => $uid));
|
||||
|
||||
if (hasData($persons))
|
||||
{
|
||||
for ($i = 0; $i < count($persons->retval); $i++)
|
||||
{
|
||||
$person = $persons->retval[$i];
|
||||
|
||||
if (!empty($person->sprache))
|
||||
{
|
||||
$language = $person->sprache;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $language;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ class Phrase_model extends DB_Model
|
||||
return $ent;
|
||||
if (isError($ent = $this->isEntitled('system.tbl_phrasentext', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
|
||||
return $ent;
|
||||
|
||||
|
||||
$parametersArray = array('app' => $app, 'sprache' => $sprache);
|
||||
|
||||
$query = 'SELECT phrase,
|
||||
@@ -36,7 +36,7 @@ class Phrase_model extends DB_Model
|
||||
if (isset($phrase))
|
||||
{
|
||||
$parametersArray['phrase'] = $phrase;
|
||||
|
||||
|
||||
if (is_array($phrase))
|
||||
{
|
||||
$query .= ' AND phrase IN ?';
|
||||
@@ -57,7 +57,24 @@ class Phrase_model extends DB_Model
|
||||
$parametersArray['orgform_kurzbz'] = $orgform_kurzbz;
|
||||
$query .= ' AND orgform_kurzbz = ?';
|
||||
}
|
||||
|
||||
|
||||
return $this->execQuery($query, $parametersArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads phrases using category(s) and language as keys
|
||||
* The retrived fields are category, phrase, orgeinheit_kurzbz, orgform_kurzbz and text
|
||||
* They are ordered by p.category, p.phrase, pt.orgeinheit_kurzbz DESC and pt.orgform_kurzbz DESC'
|
||||
*/
|
||||
public function getPhrasesByCategoryAndLanguage($categories, $language)
|
||||
{
|
||||
$query = 'SELECT p.category, p.phrase, pt.orgeinheit_kurzbz, pt.orgform_kurzbz, pt.text
|
||||
FROM system.tbl_phrase p
|
||||
INNER JOIN system.tbl_phrasentext pt USING(phrase_id)
|
||||
WHERE p.category IN ?
|
||||
AND pt.sprache = ?
|
||||
ORDER BY p.category, p.phrase, pt.orgeinheit_kurzbz DESC, pt.orgform_kurzbz DESC';
|
||||
|
||||
return $this->execQuery($query, array($categories, $language));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<form method="post" action="#" id="notizform">
|
||||
<input type="hidden" name="hiddenNotizId" value="">
|
||||
<div class="form-group">
|
||||
<div class="text-center">
|
||||
<label>Notiz hinzufügen</label>
|
||||
@@ -19,6 +20,8 @@
|
||||
<textarea name="notiz" class="form-control" rows="10" cols="32"></textarea>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<!--abbrechen-button only shown when notice is clicked to be changed-->
|
||||
<button type="reset" class="btn btn-default" style="display: none">Abbrechen</button>
|
||||
<button type="submit" class="btn btn-default">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -82,15 +82,17 @@
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
AND not exists (select 1 from tbl_prestudentstatus psss where psss.prestudent_id = pss.prestudent_id and psss.status_kurzbz = \'Abgewiesener\')
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
array_to_string(
|
||||
(
|
||||
SELECT array_agg(distinct UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz))
|
||||
SELECT array_agg(distinct UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) || \':\' || tbl_studienplan.orgform_kurzbz)
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan using (studienplan_id)
|
||||
WHERE pss.status_kurzbz = \'Interessent\'
|
||||
AND (pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bewerbung_abgeschicktamum>=\''.$NOTBEFORE.'\')
|
||||
AND pss.bestaetigtam IS NULL
|
||||
@@ -101,9 +103,53 @@
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
AND not exists (select 1 from tbl_prestudentstatus psss where psss.prestudent_id = pss.prestudent_id and psss.status_kurzbz = \'Abgewiesener\')
|
||||
LIMIT 1
|
||||
),\', \'
|
||||
) AS "StgAbgeschickt",
|
||||
array_to_string(
|
||||
(
|
||||
SELECT array_agg(distinct UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) || \':\' || tbl_studienplan.orgform_kurzbz)
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan using (studienplan_id)
|
||||
WHERE pss.status_kurzbz = \'Interessent\'
|
||||
AND (pss.bewerbung_abgeschicktamum IS NULL)
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
AND not exists (select 1 from tbl_prestudentstatus psss where psss.prestudent_id = pss.prestudent_id and psss.status_kurzbz = \'Abgewiesener\')
|
||||
LIMIT 1
|
||||
),\', \'
|
||||
) AS "StgNichtAbgeschickt",
|
||||
array_to_string(
|
||||
(
|
||||
SELECT array_agg(distinct UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) || \':\' || tbl_studienplan.orgform_kurzbz)
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan using (studienplan_id)
|
||||
WHERE pss.status_kurzbz in (\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\')
|
||||
AND (pss.bewerbung_abgeschicktamum IS NULL)
|
||||
AND ps.person_id = p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE start >= NOW()
|
||||
)
|
||||
AND not exists (select 1 from tbl_prestudentstatus psss where psss.prestudent_id = pss.prestudent_id and psss.status_kurzbz = \'Abgewiesener\')
|
||||
LIMIT 1
|
||||
),\', \'
|
||||
) AS "StgAktiv",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser as "LockUser"
|
||||
FROM public.tbl_person p
|
||||
@@ -140,17 +186,15 @@
|
||||
)
|
||||
ORDER BY "LastAction" ASC
|
||||
',
|
||||
'hideHeader' => false,
|
||||
'hideSave' => false,
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array('PersonID','Vorname','Nachname','GebDatum','Nation','Letzte Aktion','Letzter Bearbeiter',
|
||||
'StSem','GesendetAm','NumAbgeschickt','Studiengänge','Sperrdatum','GesperrtVon'),
|
||||
'columnsAliases' => array('PersonID','Vorname','Nachname','GebDatum','Nation', 'Letzte Aktion','Letzter Bearbeiter',
|
||||
'StSem','GesendetAm','NumAbgeschickt','StgSent','StgNotSent','StgAktiv', 'Sperrdatum','GesperrtVon'),
|
||||
'formatRaw' => function($datasetRaw) {
|
||||
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s%s">Details</a>',
|
||||
base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'),
|
||||
site_url('system/infocenter/InfoCenter/showDetails/'),
|
||||
$datasetRaw->{'PersonId'}
|
||||
);
|
||||
|
||||
@@ -189,9 +233,16 @@
|
||||
|
||||
if ($datasetRaw->{'StgAbgeschickt'} == null)
|
||||
{
|
||||
$datasetRaw->{'StgAbgeschickt'} = 'N/A';
|
||||
$datasetRaw->{'StgAbgeschickt'} = '-';
|
||||
}
|
||||
if ($datasetRaw->{'StgNichtAbgeschickt'} == null)
|
||||
{
|
||||
$datasetRaw->{'StgNichtAbgeschickt'} = '-';
|
||||
}
|
||||
if ($datasetRaw->{'StgAktiv'} == null)
|
||||
{
|
||||
$datasetRaw->{'StgAktiv'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Nation'} == null)
|
||||
{
|
||||
$datasetRaw->{'Nation'} = '-';
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Info Center',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'tablesorter' => true,
|
||||
'customCSSs' => 'skin/tablesort_bootstrap.css',
|
||||
'customJSs' => array('include/js/bootstrapper.js', 'include/js/infocenter/infocenterPersonDataset.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">Freigegebene Interessenten</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<?php
|
||||
|
||||
$APP = 'infocenter';
|
||||
$NOTBEFORE = '2018-03-01 18:00:00';
|
||||
$filterWidgetArray = array(
|
||||
'query' => '
|
||||
SELECT
|
||||
p.person_id AS "PersonId",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
p.gebdatum AS "Gebdatum",
|
||||
p.staatsbuergerschaft AS "Nation",
|
||||
(
|
||||
SELECT zeitpunkt
|
||||
FROM system.tbl_log
|
||||
WHERE taetigkeit_kurzbz IN(\'bewerbung\',\'kommunikation\')
|
||||
AND logdata->>\'name\' NOT IN (\'Login with code\', \'New application\')
|
||||
AND person_id = p.person_id
|
||||
ORDER BY zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "LastAction",
|
||||
(
|
||||
SELECT insertvon
|
||||
FROM system.tbl_log
|
||||
WHERE taetigkeit_kurzbz IN(\'bewerbung\',\'kommunikation\')
|
||||
AND logdata->>\'name\' NOT IN (\'Login with code\', \'New application\')
|
||||
AND person_id = p.person_id
|
||||
ORDER BY zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "User/Operator",
|
||||
(
|
||||
SELECT
|
||||
pss.studiensemester_kurzbz
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = \'Interessent\'
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "Studiensemester",
|
||||
(
|
||||
SELECT pss.bewerbung_abgeschicktamum
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = \'Interessent\'
|
||||
AND (pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bewerbung_abgeschicktamum>=\''.$NOTBEFORE.'\')
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "SendDate",
|
||||
(
|
||||
SELECT count(*)
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = \'Interessent\'
|
||||
AND (pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bewerbung_abgeschicktamum>=\''.$NOTBEFORE.'\')
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
array_to_string(
|
||||
(
|
||||
SELECT array_agg(distinct UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz))
|
||||
FROM
|
||||
public.tbl_prestudentstatus pss
|
||||
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = \'Interessent\'
|
||||
AND (pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bewerbung_abgeschicktamum>=\''.$NOTBEFORE.'\')
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
LIMIT 1
|
||||
),\', \'
|
||||
) AS "StgAbgeschickt",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser as "LockUser"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (SELECT person_id, zeitpunkt, uid as lockuser FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id)
|
||||
WHERE
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM
|
||||
public.tbl_prestudent
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE
|
||||
person_id=p.person_id
|
||||
AND tbl_studiengang.typ in(\'b\')
|
||||
AND \'Interessent\' = (SELECT status_kurzbz FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id=tbl_prestudent.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
public.tbl_prestudentstatus
|
||||
WHERE
|
||||
prestudent_id = tbl_prestudent.prestudent_id
|
||||
AND status_kurzbz = \'Interessent\'
|
||||
AND (bestaetigtam IS NOT NULL AND (bewerbung_abgeschicktamum is null OR bewerbung_abgeschicktamum>=\''.$NOTBEFORE.'\'))
|
||||
AND studiensemester_kurzbz IN (
|
||||
SELECT studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ende >= NOW()
|
||||
)
|
||||
)
|
||||
)
|
||||
ORDER BY "LastAction" ASC
|
||||
',
|
||||
'hideHeader' => false,
|
||||
'hideSave' => false,
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array('PersonID','Vorname','Nachname','GebDatum','Nation','Letzte Aktion','Letzter Bearbeiter',
|
||||
'StSem','GesendetAm','NumAbgeschickt','Studiengänge','Sperrdatum','GesperrtVon'),
|
||||
'formatRaw' => function($datasetRaw) {
|
||||
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s%s">Details</a>',
|
||||
base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'),
|
||||
$datasetRaw->{'PersonId'}
|
||||
);
|
||||
|
||||
if ($datasetRaw->{'SendDate'} == null)
|
||||
{
|
||||
$datasetRaw->{'SendDate'} = 'Not sent';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'SendDate'} = date_format(date_create($datasetRaw->{'SendDate'}),'Y-m-d H:i');
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'LastAction'} == null)
|
||||
{
|
||||
$datasetRaw->{'LastAction'} = '-';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'LastAction'} = date_format(date_create($datasetRaw->{'LastAction'}),'Y-m-d H:i');
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'User/Operator'} == '')
|
||||
{
|
||||
$datasetRaw->{'User/Operator'} = 'NA';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'LockDate'} == null)
|
||||
{
|
||||
$datasetRaw->{'LockDate'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'LockUser'} == null)
|
||||
{
|
||||
$datasetRaw->{'LockUser'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'StgAbgeschickt'} == null)
|
||||
{
|
||||
$datasetRaw->{'StgAbgeschickt'} = 'N/A';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Nation'} == null)
|
||||
{
|
||||
$datasetRaw->{'Nation'} = '-';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
if ($datasetRaw->LockDate != null)
|
||||
{
|
||||
return FilterWidget::DEFAULT_MARK_ROW_CLASS;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
$filterId = isset($_GET[InfoCenter::FILTER_ID]) ? $_GET[InfoCenter::FILTER_ID] : null;
|
||||
|
||||
if (isset($filterId) && is_numeric($filterId))
|
||||
{
|
||||
$filterWidgetArray[InfoCenter::FILTER_ID] = $filterId;
|
||||
}
|
||||
else
|
||||
{
|
||||
$filterWidgetArray['app'] = $APP;
|
||||
$filterWidgetArray['datasetName'] = 'PersonActions';
|
||||
$filterWidgetArray['filterKurzbz'] = 'InfoCenterNotSentApplicationAll';
|
||||
}
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -1,19 +1,20 @@
|
||||
<table id="notiztable" class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Datum</th>
|
||||
<th>Notiz</th>
|
||||
<th>User</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($notizen as $notiz): ?>
|
||||
<tr data-toggle="tooltip"
|
||||
title="<?php echo isset($notiz->text) ? strip_tags($notiz->text) : '' ?>">
|
||||
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
|
||||
<td><?php echo html_escape($notiz->titel) ?></td>
|
||||
<td><?php echo $notiz->verfasser_uid ?></td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
<table id="notiztable" class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Datum</th>
|
||||
<th>Notiz</th>
|
||||
<th>User</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($notizen as $notiz): ?>
|
||||
<tr data-toggle="tooltip"
|
||||
title="<?php echo isset($notiz->text) ? strip_tags($notiz->text) : '' ?>">
|
||||
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
|
||||
<td style="cursor: pointer"><?php echo html_escape($notiz->titel) ?></td>
|
||||
<td><?php echo $notiz->verfasser_uid ?></td>
|
||||
<td style="display: none"><?php echo $notiz->notiz_id ?></td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -287,10 +287,25 @@
|
||||
</div>
|
||||
</div><!-- /.column-absage -->
|
||||
<div class="col-lg-6 text-right">
|
||||
<?php
|
||||
$disabled = $disabledTxt = '';
|
||||
if (empty($zgvpruefung->prestudentstatus->bewerbung_abgeschicktamum))
|
||||
{
|
||||
$disabled = 'disabled';
|
||||
$disabledTxt = 'Die Bewerbung muss erst abgeschickt worden sein.';
|
||||
}
|
||||
|
||||
if ($zgvpruefung->studiengangtyp !== 'b')
|
||||
{
|
||||
$disabled = 'disabled';
|
||||
$disabledTxt = 'Nur Bachelorstudiengänge können freigegeben werden.';;
|
||||
}
|
||||
?>
|
||||
<div>
|
||||
<button type="button" class="btn btn-default"
|
||||
<button type="button" class="btn btn-default" <?php echo $disabled ?>
|
||||
data-toggle="modal"
|
||||
data-target="#freigabeModal_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
data-target="#freigabeModal_<?php echo $zgvpruefung->prestudent_id ?>"
|
||||
data-toggle="tooltip" title="<?php echo $disabledTxt ?>">
|
||||
Freigabe an Studiengang
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+20
-29
@@ -65,10 +65,6 @@
|
||||
</code><br/>
|
||||
<a href="https://warpedvisions.org/projects/textile-cheat-sheet/" target="_blank">Textile CheatSheet</a>
|
||||
</td></tr>
|
||||
<?php
|
||||
// This is an example to show that you can load stuff from inside the template file
|
||||
//echo $this->widgetlib->widget("tinymce_widget", array('name' => 'text', 'text' => $text));
|
||||
?>
|
||||
<tr><td colspan="2" align="right"><button type="submit">Save</button></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
@@ -77,34 +73,29 @@
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
<script>
|
||||
|
||||
$(document).ready(function () {
|
||||
initTextile();
|
||||
});
|
||||
$(document).ready(function () {
|
||||
initTextile();
|
||||
});
|
||||
|
||||
function initTextile() {
|
||||
var $content = $('#markitup'); // my textarea
|
||||
var $preview = $('#textile-preview'); // the preview div
|
||||
function initTextile() {
|
||||
var $content = $('#markitup'); // my textarea
|
||||
var $preview = $('#textile-preview'); // the preview div
|
||||
|
||||
//$content.markItUp(); // init markitup
|
||||
// use a simple timer to check if the textarea content has changed
|
||||
var value = $content.val();
|
||||
$preview.html(textile.parse(value));
|
||||
setInterval(function () {
|
||||
var newValue = $content.val();
|
||||
if (value != newValue) {
|
||||
value = newValue;
|
||||
$preview.html(textile.parse(newValue)); // convert the textile to html
|
||||
}
|
||||
}, 500);
|
||||
};
|
||||
|
||||
// use a simple timer to check if the textarea content has changed
|
||||
var value = $content.val();
|
||||
$preview.html(textile.parse(value));
|
||||
setInterval(function () {
|
||||
var newValue = $content.val();
|
||||
if (value != newValue) {
|
||||
value = newValue;
|
||||
$preview.html(textile.parse(newValue)); // convert the textile to html
|
||||
}
|
||||
}, 500);
|
||||
};
|
||||
</script>
|
||||
|
||||
</script>
|
||||
|
||||
<!--
|
||||
<iframe name="TemplatePreview" width="100%" src=""/>
|
||||
-->
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
-10
@@ -4,16 +4,6 @@
|
||||
<div class="row">
|
||||
<div class="span4">
|
||||
<h2>Phrasen</h2>
|
||||
<!--
|
||||
<form method="post" action="">
|
||||
App: aufnahme
|
||||
<?php
|
||||
// This is an example to show that you can load stuff from inside the template file
|
||||
//echo $this->widgetlib->widget("mimetype_widget", array('mimetype' => $mimetype));
|
||||
?>
|
||||
<button type="submit">Filter</button>
|
||||
</form>
|
||||
-->
|
||||
<table id="t1" class="tablesorter">
|
||||
<thead>
|
||||
<tr><th class='table-sortable:default'>ID</th>
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
// Retrives the URL path of the called controller + controller method
|
||||
// NOTE: placed here because it doesn't work inside functions
|
||||
$calledPath = $this->router->directory.$this->router->class;
|
||||
$calledMethod = $this->router->method;
|
||||
|
||||
// By default set the parameters to null
|
||||
$title = isset($title) ? $title : null;
|
||||
$customCSSs = isset($customCSSs) ? $customCSSs : null;
|
||||
@@ -55,6 +60,27 @@ function _generateCSSsInclude($CSSs)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates global JS-Object to pass parms to other javascripts
|
||||
*/
|
||||
function _generateJSDataStorageObject($calledPath, $calledMethod)
|
||||
{
|
||||
$toPrint = "\n";
|
||||
$toPrint .= '<script type="text/javascript">';
|
||||
$toPrint .= '
|
||||
var FHC_JS_DATA_STORAGE_OBJECT = {
|
||||
app_root: "'.APP_ROOT.'",
|
||||
ci_router: "index.ci.php",
|
||||
called_path: "'.$calledPath.'",
|
||||
called_method: "'.$calledMethod.'"
|
||||
};';
|
||||
$toPrint .= "\n";
|
||||
$toPrint .= '</script>';
|
||||
$toPrint .= "\n\n";
|
||||
|
||||
echo $toPrint;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates tags for the javascripts you want to include, the parameter could by a string or an array of strings
|
||||
*/
|
||||
@@ -78,13 +104,25 @@ function _generateJSsInclude($JSs)
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates global JS-Object to pass parms to addon-js-functions
|
||||
* Generates all the includes needed by the Addons
|
||||
*/
|
||||
function _generateAddonDataStorageObject()
|
||||
function _generateAddonsJSsInclude($calledFrom)
|
||||
{
|
||||
echo '<script type="text/javascript">';
|
||||
echo 'var FHC_ADDON_DATA_STORAGE_OBJECT = {app_root:"'.APP_ROOT.'"};';
|
||||
echo "</script>\n";
|
||||
$aktive_addons = array_filter(explode(";", ACTIVE_ADDONS));
|
||||
|
||||
foreach ($aktive_addons as $addon)
|
||||
{
|
||||
$hookfile = DOC_ROOT.'addons/'.$addon.'/hooks.config.inc.php';
|
||||
if (file_exists($hookfile))
|
||||
{
|
||||
include($hookfile);
|
||||
if (key_exists($calledFrom, $js_hooks))
|
||||
{
|
||||
foreach ($js_hooks[$calledFrom] as $js_file)
|
||||
_generateJSsInclude('addons/'.$addon.'/'.$js_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -102,16 +140,20 @@ function _generateAddonDataStorageObject()
|
||||
|
||||
// jQuery UI CSS
|
||||
if ($jqueryui === true) _generateCSSsInclude('vendor/components/jqueryui/themes/base/jquery-ui.min.css');
|
||||
|
||||
// bootstrap CSS
|
||||
if ($bootstrap === true) _generateCSSsInclude('vendor/twbs/bootstrap/dist/css/bootstrap.min.css');
|
||||
|
||||
// font awesome CSS
|
||||
if ($fontawesome === true) _generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css');
|
||||
|
||||
// Table sorter CSS
|
||||
if ($tablesorter === true)
|
||||
{
|
||||
_generateCSSsInclude('vendor/mottie/tablesorter/dist/css/theme.default.min.css');
|
||||
_generateCSSsInclude('vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css');
|
||||
}
|
||||
|
||||
// sb admin template CSS
|
||||
if ($sbadmintemplate === true)
|
||||
{
|
||||
@@ -125,8 +167,13 @@ function _generateAddonDataStorageObject()
|
||||
// --------------------------------------------------------------------------------------------------------
|
||||
// Javascripts
|
||||
|
||||
// Generates the global object to pass useful parms to the other javascripts
|
||||
// NOTE: must be called before any other JS include
|
||||
_generateJSDataStorageObject($calledPath, $calledMethod);
|
||||
|
||||
// JQuery V3
|
||||
if ($jquery === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js');
|
||||
|
||||
// JQuery UI
|
||||
if ($jqueryui === true)
|
||||
{
|
||||
@@ -134,8 +181,10 @@ function _generateAddonDataStorageObject()
|
||||
//datepicker german language file
|
||||
_generateJSsInclude('vendor/components/jqueryui/ui/i18n/datepicker-de.js');
|
||||
}
|
||||
|
||||
// bootstrap JS
|
||||
if ($bootstrap === true) _generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js');
|
||||
|
||||
// Table sorter JS
|
||||
if ($tablesorter === true)
|
||||
{
|
||||
@@ -143,6 +192,7 @@ function _generateAddonDataStorageObject()
|
||||
_generateJSsInclude('vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js');
|
||||
_generateJSsInclude('vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js');
|
||||
}
|
||||
|
||||
//tinymce JS
|
||||
if($tinymce === true) _generateJSsInclude('vendor/tinymce/tinymce/tinymce.min.js') ;
|
||||
|
||||
@@ -153,27 +203,8 @@ function _generateAddonDataStorageObject()
|
||||
_generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js');
|
||||
}
|
||||
|
||||
// load addon hooks JS
|
||||
if ($addons === true)
|
||||
{
|
||||
_generateAddonDataStorageObject();
|
||||
|
||||
$aktive_addons = array_filter(explode(";", ACTIVE_ADDONS));
|
||||
$called_from = $this->router->directory.$this->router->class.'/'.$this->router->method;
|
||||
foreach ($aktive_addons as $addon)
|
||||
{
|
||||
$hookfile = DOC_ROOT.'addons/'.$addon.'/hooks.config.inc.php';
|
||||
if (file_exists($hookfile))
|
||||
{
|
||||
include($hookfile);
|
||||
if (key_exists($called_from, $js_hooks))
|
||||
{
|
||||
foreach ($js_hooks[$called_from] as $js_file)
|
||||
_generateJSsInclude('addons/'.$addon.'/'.$js_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Load addon hooks JS
|
||||
if ($addons === true) _generateAddonsJSsInclude($calledPath.'/'.$calledMethod);
|
||||
|
||||
// Eventually required JS
|
||||
_generateJSsInclude($customJSs);
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
<style>
|
||||
|
||||
.filter-options-span {
|
||||
display: inline-block;
|
||||
width: 130px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.filter-name-title {
|
||||
font-family: inherit;
|
||||
font-size: 16px;
|
||||
@@ -69,53 +75,48 @@
|
||||
|
||||
.select-filter-option {
|
||||
display: inline;
|
||||
width: 90px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
#addField {
|
||||
#addField, #customFilterDescription, #addFilter {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#addFilter {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
width: 535px;
|
||||
}
|
||||
|
||||
#selectedFilters {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#customFilterDescription {
|
||||
display: inline;
|
||||
width: 400px;
|
||||
#applyFilter, #saveCustomFilterButton, .remove-selected-filter {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#applyFilter, #saveCustomFilterButton {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.remove-selected-filter {
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
font-weight: bold;
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.remove-field {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
</style>
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
function refreshSideMenu()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/infocenter/InfoCenter/setNavigationMenuArray'); ?>",
|
||||
method: "GET",
|
||||
data: {}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
renderSideMenu();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function sideMenuHook()
|
||||
{
|
||||
$(".remove-filter").click(function() {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/deleteCustomFilter'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/deleteCustomFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
filter_id: $(this).attr('value')
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
if ($("#customFilterDescription").val() != '')
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/saveFilter'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/saveFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
customFilterDescription: $("#customFilterDescription").val()
|
||||
@@ -30,12 +30,19 @@
|
||||
|
||||
</script>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<span class="filter-options-span">
|
||||
Filter description:
|
||||
</span>
|
||||
<span>
|
||||
Filter description: <input type="text" id="customFilterDescription" value="">
|
||||
<input type="text" id="customFilterDescription" value="">
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input type="button" id="saveCustomFilterButton" value="Save filter">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/sortSelectedFields'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/sortSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
selectedFieldsLst: arrayDndId
|
||||
@@ -106,7 +106,7 @@
|
||||
$("#addField").change(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/addSelectedFields'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/addSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).val()
|
||||
@@ -128,7 +128,7 @@
|
||||
$(".remove-field").click(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/removeSelectedFields'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/removeSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).attr('fieldToRemove')
|
||||
@@ -151,7 +151,7 @@
|
||||
function renderSelectedFields()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/selectFields'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/selectFields'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
@@ -232,7 +232,7 @@
|
||||
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div"></div>
|
||||
|
||||
<div>
|
||||
<span>
|
||||
<span class="filter-options-span">
|
||||
Add field:
|
||||
</span>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
$("#addFilter").change(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/addSelectedFilters'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/addSelectedFilters'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).val()
|
||||
@@ -70,7 +70,7 @@
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/applyFilter'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/applyFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
filterNames: selectFilterName,
|
||||
@@ -94,6 +94,23 @@
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".remove-selected-filter").click(function(event) {
|
||||
$.ajax({
|
||||
url: "<?php echo site_url('system/Filters/removeSelectedFilters'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).attr('filterToRemove')
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
resetSelectedFilters();
|
||||
renderSelectedFilters();
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function renderSelectedFilterFields(metaData, activeFilters, activeFiltersOperation, activeFiltersOption)
|
||||
@@ -103,7 +120,7 @@
|
||||
if (metaData.type.toLowerCase().indexOf("int") >= 0)
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <select class="form-control select-filter-operation">';
|
||||
html += ' <option value="equal" ' + (activeFiltersOperation == "equal" ? "selected" : "") + '>equal</option>';
|
||||
html += ' <option value="nequal" ' + (activeFiltersOperation == "nqual" ? "selected" : "") + '>not equal</option>';
|
||||
html += ' <option value="gt" ' + (activeFiltersOperation == "gt" ? "selected" : "") + '>greater than</option>';
|
||||
@@ -111,37 +128,37 @@
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="number" value="' + activeFilters + '" class="select-filter-operation-value form-control">';
|
||||
html += ' <input type="number" value="' + activeFilters + '" class="form-control select-filter-operation-value">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('varchar') >= 0)
|
||||
if (metaData.type.toLowerCase().indexOf('varchar') >= 0 || metaData.type.toLowerCase() == 'text')
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <select class="form-control select-filter-operation">';
|
||||
html += ' <option value="contains" ' + (activeFiltersOperation == "contains" ? "selected" : "") + '>contains</option>';
|
||||
html += ' <option value="ncontains" ' + (activeFiltersOperation == "ncontains" ? "selected" : "") + '>does not contain</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="text" value="' + activeFilters + '" class="select-filter-operation-value form-control">';
|
||||
html += ' <input type="text" value="' + activeFilters + '" class="form-control select-filter-operation-value">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('bool') >= 0)
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <select class="form-control select-filter-operation">';
|
||||
html += ' <option value="true" ' + (activeFiltersOperation == "true" ? "selected" : "") + '>is true</option>';
|
||||
html += ' <option value="false" ' + (activeFiltersOperation == "false" ? "selected" : "") + '>is false</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="hidden" value="' + activeFilters + '" class="select-filter-operation-value form-control">';
|
||||
html += ' <input type="hidden" value="' + activeFilters + '" class="form-control select-filter-operation-value">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('timestamp') >= 0 || metaData.type.toLowerCase().indexOf('date') >= 0)
|
||||
{
|
||||
var classOperation = 'select-filter-operation-value form-control';
|
||||
var classOption = 'select-filter-option form-control';
|
||||
var classOperation = 'form-control select-filter-operation-value';
|
||||
var classOption = 'form-control select-filter-option';
|
||||
var disabled = "";
|
||||
|
||||
if (activeFiltersOperation == "set" || activeFiltersOperation == "nset")
|
||||
@@ -152,7 +169,7 @@
|
||||
}
|
||||
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation form-control">';
|
||||
html += ' <select class="form-control select-filter-operation">';
|
||||
html += ' <option value="lt" ' + (activeFiltersOperation == "lt" ? "selected" : "") + '>less than</option>';
|
||||
html += ' <option value="gt" ' + (activeFiltersOperation == "gt" ? "selected" : "") + '>greater than</option>';
|
||||
html += ' <option value="set" ' + (activeFiltersOperation == "set" ? "selected" : "") + '>is set</option>';
|
||||
@@ -180,7 +197,7 @@
|
||||
function renderSelectedFilters()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/selectFilters'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/selectFilters'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
@@ -198,7 +215,7 @@
|
||||
{
|
||||
var selectedFilters = '<div>';
|
||||
|
||||
selectedFilters += '<span>';
|
||||
selectedFilters += '<span class="filter-options-span">';
|
||||
selectedFilters += data.selectedFiltersAliases[i];
|
||||
selectedFilters += '</span>';
|
||||
|
||||
@@ -210,7 +227,7 @@
|
||||
);
|
||||
|
||||
selectedFilters += '<span>';
|
||||
selectedFilters += '<input type="button" value="X" class="remove-filter btn btn-default" filterToRemove="' + data.selectedFilters[i] + '">';
|
||||
selectedFilters += '<input type="button" value="X" class="remove-selected-filter btn btn-default" filterToRemove="' + data.selectedFilters[i] + '">';
|
||||
selectedFilters += '</span>';
|
||||
|
||||
selectedFilters += '</div>';
|
||||
@@ -255,10 +272,12 @@
|
||||
|
||||
</script>
|
||||
|
||||
<br>
|
||||
|
||||
<div id="selectedFilters"></div>
|
||||
|
||||
<div>
|
||||
<span>
|
||||
<span class="filter-options-span">
|
||||
Add filter:
|
||||
</span>
|
||||
|
||||
@@ -267,6 +286,6 @@
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input id="applyFilter" type="button" value="Apply">
|
||||
<input id="applyFilter" type="button" value="Apply filter">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
function renderTableDataset()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/tableDataset'); ?>",
|
||||
url: "<?php echo site_url('system/Filters/tableDataset'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Navigation/header'); ?>",
|
||||
url: "<?php echo site_url('system/Navigation/header'); ?>",
|
||||
method: "GET",
|
||||
data: {
|
||||
navigation_widget_called: "<?php echo $this->router->directory.$this->router->class.'/'.$this->router->method; ?>"
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
function renderSideMenu()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Navigation/menu'); ?>",
|
||||
url: "<?php echo site_url('system/Navigation/menu'); ?>",
|
||||
method: "GET",
|
||||
data: {
|
||||
navigation_widget_called: "<?php echo $this->router->directory.$this->router->class.'/'.$this->router->method; ?>"
|
||||
@@ -120,7 +120,7 @@
|
||||
strMenu += printNavItem(e);
|
||||
});
|
||||
|
||||
$("#side-menu").append(strMenu);
|
||||
$("#side-menu").html(strMenu);
|
||||
$("#side-menu").metisMenu();
|
||||
}
|
||||
|
||||
@@ -138,17 +138,20 @@
|
||||
function printCollapseIcon()
|
||||
{
|
||||
// Hiding/showing navigation menu - works only with sb admin 2 template!!
|
||||
if(!$("#collapseicon").length)
|
||||
$("#side-menu").parent().append('<div id="collapseicon" title="hide Menu" class="text-right" style="cursor: pointer; color: #337ab7"><i class="fa fa-angle-double-left fa-fw"></i></div>');
|
||||
|
||||
$("#side-menu").html('<li id="collapseicon" class="text-right" style="cursor: pointer; color: #337ab7"><i class="fa fa-angle-double-left fa-fw"></i></li>');
|
||||
$("#collapseicon").click(function() {
|
||||
$("#page-wrapper").css('margin-left', '0px');
|
||||
$("#side-menu").hide();
|
||||
$("#collapseicon").hide();
|
||||
$("#collapseinicon").show();
|
||||
});
|
||||
|
||||
$("#collapseinicon").click(function() {
|
||||
$("#page-wrapper").css('margin-left', '250px');
|
||||
$("#side-menu").show();
|
||||
$("#collapseicon").show();
|
||||
$("#collapseinicon").hide();
|
||||
});
|
||||
}
|
||||
@@ -165,5 +168,5 @@
|
||||
<div class="sidebar-nav navbar-collapse">
|
||||
<ul class="nav" id="side-menu"></ul>
|
||||
</div>
|
||||
<i id="collapseinicon" class="fa fa-angle-double-right fa-fw"></i>
|
||||
<i id="collapseinicon" title="show Menu" class="fa fa-angle-double-right fa-fw"></i>
|
||||
</div>
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
<?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 >
|
||||
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
||||
*/
|
||||
/**
|
||||
* anwesenheitsliste.pdf.php
|
||||
*
|
||||
* Erstellt eine Anwesenheitsliste im PDF-Format
|
||||
*
|
||||
*/
|
||||
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// Datenbankanbindung
|
||||
// ------------------------------------------------------------------------------------------
|
||||
require_once('../../../include/basis_db.class.php');
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Herstellen der Datenbankverbindung');
|
||||
|
||||
// Pfad zu fpdf
|
||||
define('FPDF_FONTPATH','../../../include/pdf/font/');
|
||||
// library einbinden
|
||||
require_once('../../../include/pdf/fpdf.php');
|
||||
|
||||
require_once('../../../include/person.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/lehrveranstaltung.class.php');
|
||||
require_once('../../../include/pdf.inc.php');
|
||||
|
||||
//Uebergabeparameter abpruefen
|
||||
if(isset($_GET['stg'])) //Studiengang
|
||||
{
|
||||
if(is_numeric($_GET['stg']))
|
||||
$stg=$_GET['stg'];
|
||||
else
|
||||
die('Fehler bei der Parameteruebergabe');
|
||||
}
|
||||
else
|
||||
$stg='';
|
||||
if(isset($_GET['sem'])) //Semester
|
||||
{
|
||||
if(is_numeric($_GET['sem']))
|
||||
$sem=$_GET['sem'];
|
||||
else
|
||||
die('Fehler bei der Parameteruebergabe');
|
||||
}
|
||||
else
|
||||
$sem='';
|
||||
|
||||
if(isset($_GET['verband'])) //Verband
|
||||
$verband=$_GET['verband'];
|
||||
else
|
||||
$verband='';
|
||||
if(isset($_GET['gruppe'])) //Gruppe
|
||||
$gruppe=$_GET['gruppe'];
|
||||
else
|
||||
$gruppe='';
|
||||
if(isset($_GET['gruppe_kurzbz'])) //Einheit
|
||||
$gruppe_kurzbz = $_GET['gruppe_kurzbz'];
|
||||
else
|
||||
$gruppe_kurzbz='';
|
||||
|
||||
if(isset($_GET['lvid']) && is_numeric($_GET['lvid']))
|
||||
$lvid = $_GET['lvid'];
|
||||
else
|
||||
die('Fehler bei der Parameteruebergabe');
|
||||
|
||||
if(isset($_GET['stsem']))
|
||||
$stsem = $_GET['stsem'];
|
||||
else
|
||||
die('Studiensemester wurde nicht uebergeben');
|
||||
|
||||
$lehreinheit_id = (isset($_GET['lehreinheit_id'])?$_GET['lehreinheit_id']:'');
|
||||
/**
|
||||
* liefert den groesseren der beiden werte
|
||||
*
|
||||
*/
|
||||
function getmax($val1,$val2)
|
||||
{
|
||||
return ($val1>$val2)?$val1:$val2;
|
||||
|
||||
}
|
||||
if (file_exists('../../../addons/sfu-milano/include/'.EXT_FKT_PATH.'/anwesenheitsliste_bilder.inc.php'))
|
||||
require_once('../../../addons/sfu-milano/include/'.EXT_FKT_PATH.'/anwesenheitsliste_bilder.inc.php');
|
||||
else
|
||||
require_once('../../../include/'.EXT_FKT_PATH.'/anwesenheitsliste_bilder.inc.php');
|
||||
|
||||
?>
|
||||
+128
-314
@@ -16,19 +16,18 @@
|
||||
* 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>.
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/* Erstellt einen Lehrauftrag im PDF Format
|
||||
*
|
||||
* Erstellt ein XML File Transformiert dieses mit
|
||||
* Hilfe der XSL-FO Vorlage aus der DB und generiert
|
||||
* daraus ein PDF (xslfo2pdf)
|
||||
* daraus ein PDF
|
||||
*/
|
||||
require_once('../../config/cis.config.inc.php');
|
||||
require_once('../../include/functions.inc.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/xslfo2pdf/xslfo2pdf.php');
|
||||
require_once('../../include/akte.class.php');
|
||||
require_once('../../include/konto.class.php');
|
||||
require_once('../../include/benutzer.class.php');
|
||||
@@ -37,6 +36,7 @@ require_once('../../include/addon.class.php');
|
||||
require_once('../../include/studiengang.class.php');
|
||||
require_once('../../include/student.class.php');
|
||||
require_once('../../include/prestudent.class.php');
|
||||
require_once('../../include/dokument_export.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
@@ -48,112 +48,113 @@ $rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
//Parameter holen
|
||||
if(isset($_GET['xml']))
|
||||
$xml=$_GET['xml'];
|
||||
if (isset($_GET['xml']))
|
||||
$xml = $_GET['xml'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
if(isset($_GET['xsl']))
|
||||
$xsl=$_GET['xsl'];
|
||||
if (isset($_GET['xsl']))
|
||||
$xsl = $_GET['xsl'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz=0;
|
||||
$xsl_stg_kz = 0;
|
||||
|
||||
$sign = false;
|
||||
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
if (isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz = $_GET['xsl_stg_kz'];
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
if (isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz = $_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen
|
||||
// in dem der 1. Studierende in der Liste ist
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
if (isset($_GET['uid']) && $_GET['uid'] != '')
|
||||
{
|
||||
if(strstr($_GET['uid'],';'))
|
||||
if (strstr($_GET['uid'],';'))
|
||||
$uids = explode(';',$_GET['uid']);
|
||||
else
|
||||
$uids[1] = $_GET['uid'];
|
||||
|
||||
$student_obj = new student();
|
||||
if($student_obj->load($uids[1]))
|
||||
if ($student_obj->load($uids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$student_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
elseif(isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
|
||||
elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id'] != '')
|
||||
{
|
||||
if(strstr($_GET['prestudent_id'],';'))
|
||||
if (strstr($_GET['prestudent_id'],';'))
|
||||
$prestudent_ids = explode(';',$_GET['prestudent_id']);
|
||||
else
|
||||
$prestudent_ids[1] = $_GET['prestudent_id'];
|
||||
|
||||
$prestudent_obj = new prestudent();
|
||||
if($prestudent_obj->load($prestudent_ids[1]))
|
||||
if ($prestudent_obj->load($prestudent_ids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$prestudent_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $prestudent_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
if (isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$version = $_GET['version'];
|
||||
else
|
||||
$version ='';
|
||||
$version = null;
|
||||
|
||||
if(isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz'];
|
||||
if (isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz'];
|
||||
else
|
||||
$xsl_oe_kurzbz='';
|
||||
$xsl_oe_kurzbz = '';
|
||||
|
||||
//Parameter setzen
|
||||
$params='?xmlformat=xml';
|
||||
//if(isset($_GET['uid']))
|
||||
// $params.='&uid='.$_GET['uid'];
|
||||
$params = 'xmlformat=xml';
|
||||
|
||||
//Admins duerfen Dokumente anderer Personen drucken
|
||||
if($rechte->isBerechtigt('admin'))
|
||||
if ($rechte->isBerechtigt('admin'))
|
||||
$user = $_GET['uid'];
|
||||
|
||||
$params.='&uid='.$user;
|
||||
if(isset($_GET['person_id']))
|
||||
$params.='&person_id='.$_GET['person_id'];
|
||||
if(isset($_GET['buchungsnummern']))
|
||||
$params.='&buchungsnummern='.$_GET['buchungsnummern'];
|
||||
if(isset($_GET['stg_kz']))
|
||||
$params.='&stg_kz='.$_GET['stg_kz'];
|
||||
if(isset($_GET['ss']))
|
||||
$params.='&ss='.$_GET['ss'];
|
||||
if(isset($_GET['abschlusspruefung_id']))
|
||||
$params.='&abschlusspruefung_id='.$_GET['abschlusspruefung_id'];
|
||||
if(isset($_GET['typ']))
|
||||
$params.='&typ='.$_GET['typ'];
|
||||
if(isset($_GET['all']))
|
||||
$params.='&all=1';
|
||||
$params .= '&uid='.$user;
|
||||
if (isset($_GET['person_id']))
|
||||
$params .= '&person_id='.$_GET['person_id'];
|
||||
if (isset($_GET['buchungsnummern']))
|
||||
$params .= '&buchungsnummern='.$_GET['buchungsnummern'];
|
||||
if (isset($_GET['stg_kz']))
|
||||
$params .= '&stg_kz='.$_GET['stg_kz'];
|
||||
if (isset($_GET['ss']))
|
||||
$params .= '&ss='.$_GET['ss'];
|
||||
if (isset($_GET['abschlusspruefung_id']))
|
||||
$params .= '&abschlusspruefung_id='.$_GET['abschlusspruefung_id'];
|
||||
if (isset($_GET['typ']))
|
||||
$params .= '&typ='.$_GET['typ'];
|
||||
if (isset($_GET['all']))
|
||||
$params .= '&all=1';
|
||||
|
||||
//OE fuer Output ermitteln
|
||||
|
||||
if ($xsl_oe_kurzbz!='')
|
||||
if ($xsl_oe_kurzbz != '')
|
||||
{
|
||||
$oe_kurzbz = $xsl_oe_kurzbz;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$oe = new studiengang();
|
||||
$oe->load($xsl_stg_kz);
|
||||
$oe_kurzbz = $oe->oe_kurzbz;
|
||||
}
|
||||
|
||||
//Darf der User Dokumente in einem NICHT-PDF-Format exportieren?
|
||||
if (isset($_GET['output']) && $_GET['output']!='pdf')
|
||||
if (isset($_GET['output']) && $_GET['output'] != 'pdf')
|
||||
{
|
||||
if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz))
|
||||
if (!$rechte->isBerechtigt('system/change_outputformat', $oe_kurzbz))
|
||||
{
|
||||
$output = 'pdf';
|
||||
}
|
||||
@@ -167,283 +168,96 @@ else
|
||||
$konto = new konto();
|
||||
if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin'))
|
||||
{
|
||||
$buchungstypen = array();
|
||||
if(defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
{
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
}
|
||||
|
||||
if(isset($_GET['ss']))
|
||||
$stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']);
|
||||
|
||||
if((($xsl=='Inskription') || ($xsl == 'Studienblatt')) && ($_GET["ss"] != $stsem_zahlung))
|
||||
$buchungstypen = array();
|
||||
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
{
|
||||
die('Der Studienbeitrag wurde noch nicht bezahlt');
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
}
|
||||
if(isset($_GET['buchungsnummern']))
|
||||
|
||||
if (isset($_GET['ss']))
|
||||
$stsem_zahlung = $konto->getLastStSemBuchungstypen($user, $buchungstypen, $_GET['ss']);
|
||||
|
||||
if ((($xsl=='Inskription') || ($xsl == 'Studienblatt')) && ($_GET["ss"] != $stsem_zahlung))
|
||||
{
|
||||
//Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren
|
||||
$buchungsnr = explode(';',$_GET['buchungsnummern']);
|
||||
$user_obj = new benutzer();
|
||||
$user_obj->load($user);
|
||||
foreach($buchungsnr as $bnr)
|
||||
{
|
||||
if($bnr!='')
|
||||
die('Der Studienbeitrag wurde noch nicht bezahlt');
|
||||
}
|
||||
if (isset($_GET['buchungsnummern']))
|
||||
{
|
||||
//Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren
|
||||
$buchungsnr = explode(';',$_GET['buchungsnummern']);
|
||||
$user_obj = new benutzer();
|
||||
$user_obj->load($user);
|
||||
foreach($buchungsnr as $bnr)
|
||||
{
|
||||
$konto->load($bnr);
|
||||
if($konto->person_id!=$user_obj->person_id)
|
||||
die('Sie haben keine Berechtigung fuer diese Buchung');
|
||||
if($konto->getDifferenz($bnr)>0)
|
||||
die('Diese Zahlung wurde noch nicht beglichen');
|
||||
if ($bnr != '')
|
||||
{
|
||||
$konto->load($bnr);
|
||||
if ($konto->person_id!=$user_obj->person_id)
|
||||
die('Sie haben keine Berechtigung fuer diese Buchung');
|
||||
if ($konto->getDifferenz($bnr)>0)
|
||||
die('Diese Zahlung wurde noch nicht beglichen');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$xml_url=XML_ROOT.$xml.$params;
|
||||
//echo $xml_url;
|
||||
// Load the XML source
|
||||
$xml_doc = new DOMDocument;
|
||||
$xml_url = XML_ROOT.$xml.$params;
|
||||
|
||||
if(!$xml_doc->load($xml_url))
|
||||
die('unable to load xml');
|
||||
//echo ':'.$xml_doc->saveXML().':';
|
||||
|
||||
//XSL aus der DB holen
|
||||
$vorlage = new vorlage();
|
||||
if($xsl_oe_kurzbz!='')
|
||||
if ($xsl_oe_kurzbz == '')
|
||||
{
|
||||
$vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$stg_obj = new studiengang();
|
||||
if (!$stg_obj->load($xsl_stg_kz))
|
||||
die($stg_obj->errormsg);
|
||||
$xsl_oe_kurzbz = $stg_obj->oe_kurzbz;
|
||||
}
|
||||
|
||||
$dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version);
|
||||
$dokument->addDataURL($xml, $params);
|
||||
|
||||
switch($xsl)
|
||||
{
|
||||
case 'LV_Informationen':
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz;
|
||||
break;
|
||||
case 'Honorarvertrag':
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname;
|
||||
break;
|
||||
case 'Studienordnung':
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'.
|
||||
$filename .= sprintf("%'.04d",$studienordnung->studiengang_kz).
|
||||
$filename .= '-'.$studienordnung->studiengangkurzbzlang;
|
||||
break;
|
||||
default:
|
||||
$filename = $xsl;
|
||||
}
|
||||
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
if (!$dokument->create($output))
|
||||
die($dokument->errormsg);
|
||||
|
||||
if ($sign === true)
|
||||
{
|
||||
if ($dokument->sign($user))
|
||||
{
|
||||
$dokument->output();
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $dokument->errormsg;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($vorlage->text))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tmp = sys_get_temp_dir();
|
||||
$tempfolder = $tmp.'/FHC'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
|
||||
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
{
|
||||
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
|
||||
if($vorlage->style!='')
|
||||
{
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($vorlage->style))
|
||||
die('unable to load xsl from tbl_vorlagestudiengang');
|
||||
}
|
||||
else
|
||||
{
|
||||
$style_xsl=$_GET['style_xsl'];
|
||||
$style_vorlage = new vorlage();
|
||||
$style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version);
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($style_vorlage->text))
|
||||
die('unable to load xsl');
|
||||
}
|
||||
|
||||
// Configure the transformer
|
||||
$style_proc = new XSLTProcessor;
|
||||
$style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules
|
||||
|
||||
$stylebuffer = $style_proc->transformToXml($xml_doc);
|
||||
|
||||
file_put_contents('styles.xml', $stylebuffer);
|
||||
}
|
||||
|
||||
$vorlage_found=false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
if(file_exists($zipfile))
|
||||
{
|
||||
$vorlage_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$vorlage_found)
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
|
||||
clearstatcache();
|
||||
if($vorlage->bezeichnung!='')
|
||||
$filename = $vorlage->bezeichnung;
|
||||
else
|
||||
$filename = $vorlage->vorlage_kurzbz;
|
||||
if($output == 'pdf')
|
||||
{
|
||||
if($xsl == 'LV_Informationen')
|
||||
{
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Honorarvertrag")
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.pdf';
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
}
|
||||
else
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
$filename = $filename.'.pdf';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='odt')
|
||||
{
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = $filename.'_'.$studienordnung->studiengangkurzbzlang;
|
||||
}
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='doc')
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.doc';
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.doc';
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = $filename.'.doc';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/vnd.ms-word');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
unlink('content.xml');
|
||||
if(file_exists('styles.xml'))
|
||||
unlink('styles.xml');
|
||||
unlink($tempname_zip);
|
||||
if($output=='pdf' || $output=='doc')
|
||||
unlink($tempPdfName);
|
||||
rmdir($tempfolder);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($vorlage->text))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//in $buffer steht nun das xsl-fo file mit den daten
|
||||
$buffer = '<?xml version="1.0" encoding="utf-8" ?>'.substr($buffer, strpos($buffer,"\n"),strlen($buffer));
|
||||
|
||||
//Pdf erstellen
|
||||
$fo2pdf = new XslFo2Pdf();
|
||||
|
||||
//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen
|
||||
$nachname='';
|
||||
|
||||
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
$uid = str_replace(';','',$_GET['uid']);
|
||||
$qry = "SELECT nachname FROM campus.vw_benutzer WHERE uid=".$db->db_add_param($uid);
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$nachname = '_'.$row->nachname;
|
||||
}
|
||||
}
|
||||
}
|
||||
$filename=$xsl.$nachname;
|
||||
|
||||
if (!$fo2pdf->generatePdf($buffer, $filename, "D"))
|
||||
{
|
||||
echo('Failed to generate PDF');
|
||||
}
|
||||
}
|
||||
$dokument->output();
|
||||
$dokument->close();
|
||||
}
|
||||
else
|
||||
{
|
||||
// kein berechtigung
|
||||
// keine berechtigung
|
||||
echo "<html><body><h3>Sie haben keine Berechtigung zum Anzeigen dieser Seite</h3></body></html>";
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -25,7 +25,10 @@ require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/konto.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/prestudent.class.php');
|
||||
require_once('../../../include/student.class.php');
|
||||
require_once('../../../include/akte.class.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
@@ -49,12 +52,12 @@ if(isset($_GET['uid']))
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($uid);
|
||||
if($rechte->isBerechtigt('admin'))
|
||||
{
|
||||
{
|
||||
$uid = $_GET['uid'];
|
||||
$getParam = "&uid=" . $uid;
|
||||
}
|
||||
else
|
||||
$getParam = "";
|
||||
$getParam = "&uid=" . $uid;
|
||||
}
|
||||
else
|
||||
$getParam = "";
|
||||
}
|
||||
else
|
||||
$getParam='';
|
||||
@@ -65,135 +68,186 @@ $xsl_stg_kz = $student_studiengang->studiengang_kz;
|
||||
|
||||
$stg = '';
|
||||
|
||||
if(!($erg=$db->db_query("SELECT * FROM campus.vw_benutzer WHERE uid='".addslashes($uid)."'")))
|
||||
die($db->db_last_error());
|
||||
$num_rows=$db->db_num_rows($erg);
|
||||
if ($num_rows==1)
|
||||
if(isset($_GET['action']) && $_GET['action']=='download')
|
||||
{
|
||||
$vorname=$db->db_result($erg,0,"vorname");
|
||||
$vornamen=$db->db_result($erg,0,"vornamen");
|
||||
$nachname=$db->db_result($erg,0,"nachname");
|
||||
$gebdatum=$db->db_result($erg,0,"gebdatum");
|
||||
$gebort=$db->db_result($erg,0,"gebort");
|
||||
$titelpre=$db->db_result($erg,0,"titelpre");
|
||||
$titelpost=$db->db_result($erg,0,"titelpost");
|
||||
$email=$db->db_result($erg,0,"uid").'@'.DOMAIN;
|
||||
$email_alias=$db->db_result($erg,0,"alias");
|
||||
$hp=$db->db_result($erg,0,"homepage");
|
||||
if(isset($_GET['id']) && is_numeric($_GET['id']))
|
||||
{
|
||||
$id = $_GET['id'];
|
||||
$akte = new akte();
|
||||
$akte->load($id);
|
||||
if ($akte->person_id == $student_studiengang->person_id
|
||||
&& $akte->signiert
|
||||
&& $akte->stud_selfservice)
|
||||
{
|
||||
if($akte->inhalt!='')
|
||||
{
|
||||
//Header fuer Datei schicken
|
||||
header("Content-type: $akte->mimetype");
|
||||
header('Content-Disposition: attachment; filename="'.$akte->titel.'"');
|
||||
echo base64_decode($akte->inhalt);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Id ist ungueltig');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Id ist ungueltig');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Id ist ungueltig');
|
||||
}
|
||||
}
|
||||
if(!($erg_stud=$db->db_query("SELECT studiengang_kz, semester, verband, gruppe, matrikelnr, typ::varchar(1) || kurzbz AS stgkz, tbl_studiengang.bezeichnung AS stgbz FROM public.tbl_student JOIN public.tbl_studiengang USING(studiengang_kz) WHERE student_uid='".addslashes($uid)."'")))
|
||||
die($db->db_last_error());
|
||||
$stud_num_rows=$db->db_num_rows($erg_stud);
|
||||
|
||||
if ($stud_num_rows==1)
|
||||
{
|
||||
$stg=$db->db_result($erg_stud,0,"studiengang_kz");
|
||||
$stgbez=$db->db_result($erg_stud,0,"stgbz");
|
||||
$stgkz=$db->db_result($erg_stud,0,"stgkz");
|
||||
$semester=$db->db_result($erg_stud,0,"semester");
|
||||
$verband=$db->db_result($erg_stud,0,"verband");
|
||||
$gruppe=$db->db_result($erg_stud,0,"gruppe");
|
||||
$matrikelnr=$db->db_result($erg_stud,0,"matrikelnr");
|
||||
}
|
||||
if(!($erg_lekt=$db->db_query("SELECT * FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'")))
|
||||
die($db->db_last_error());
|
||||
$lekt_num_rows=$db->db_num_rows($erg_lekt);
|
||||
if ($lekt_num_rows==1)
|
||||
{
|
||||
$row=$db->db_fetch_object($erg_lekt,0);
|
||||
$kurzbz=$row->kurzbz;
|
||||
$tel=$row->telefonklappe;
|
||||
}
|
||||
|
||||
// Mail-Groups
|
||||
if(!($erg_mg=$db->db_query("SELECT gruppe_kurzbz, beschreibung FROM campus.vw_persongruppe WHERE mailgrp AND uid='".addslashes($uid)."' ORDER BY gruppe_kurzbz")))
|
||||
die($db->db_last_error());
|
||||
$nr_mg=$db->db_num_rows($erg_mg);
|
||||
|
||||
echo '
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
echo '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>'.$p->t('tools/dokumente').'</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
function MM_jumpMenu(targ, selObj, restore)
|
||||
{
|
||||
eval(targ + ".location=\'" + selObj.options[selObj.selectedIndex].value + "'.$getParam.'\'");
|
||||
<title>'.$p->t('tools/dokumente').'</title>
|
||||
<meta charset="UTF-8">
|
||||
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">';
|
||||
include('../../../include/meta/jquery.php');
|
||||
include('../../../include/meta/jquery-tablesorter.php');
|
||||
echo '
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
|
||||
if(restore)
|
||||
{
|
||||
selObj.selectedIndex = 0;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[0,1]],
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
});
|
||||
|
||||
function changeSemester(obj)
|
||||
{
|
||||
self.location = obj.options[obj.selectedIndex].value + "'.$getParam.'";
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>'.$p->t('tools/dokumente').'</h1>';
|
||||
<h1>'.$p->t('tools/dokumente').'</h1>
|
||||
|
||||
<h2>Bestätigungen</h2>';
|
||||
|
||||
//Aktuelles Studiensemester oder gewaehltes Studiensemester
|
||||
$prestudent = new prestudent();
|
||||
$prestudent->getPrestudentRolle($student_studiengang->prestudent_id);
|
||||
|
||||
$stsem_arr = array();
|
||||
$laststsem = '';
|
||||
foreach($prestudent->result as $row)
|
||||
{
|
||||
$stsem_arr[] = $row->studiensemester_kurzbz;
|
||||
$laststsem = $row->studiensemester_kurzbz;
|
||||
}
|
||||
$stsem_arr = array_unique($stsem_arr);
|
||||
if($stsem == '')
|
||||
$stsem = $laststsem;
|
||||
|
||||
/*//Aktuelles Studiensemester oder gewaehltes Studiensemester
|
||||
$stsem_obj = new studiensemester();
|
||||
if($stsem=='')
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
if($stsem == '')
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
|
||||
$stsem_obj->getAll();
|
||||
*/
|
||||
echo $p->t('global/studiensemester');
|
||||
echo ' <SELECT name="stsem" onChange="changeSemester(this)">';
|
||||
|
||||
echo "<br><hr>";
|
||||
echo $p->t('global/studiensemester')."</b> <SELECT name='stsem' onChange=\"MM_jumpMenu('self',this,0)\">";
|
||||
foreach ($stsem_obj->studiensemester as $semrow)
|
||||
foreach ($stsem_arr as $semrow)
|
||||
{
|
||||
if ($stsem == $semrow)
|
||||
{
|
||||
if($stsem == $semrow->studiensemester_kurzbz)
|
||||
echo "<OPTION value='dokumente.php?stsem=$semrow->studiensemester_kurzbz' selected>$semrow->studiensemester_kurzbz</OPTION>";
|
||||
else
|
||||
echo "<OPTION value='dokumente.php?stsem=$semrow->studiensemester_kurzbz'>$semrow->studiensemester_kurzbz</OPTION>";
|
||||
echo '<OPTION value="dokumente.php?stsem='.$semrow.'" selected>';
|
||||
echo $semrow;
|
||||
echo '</OPTION>';
|
||||
}
|
||||
echo "</SELECT><br />";
|
||||
else
|
||||
{
|
||||
echo '<OPTION value="dokumente.php?stsem='.$semrow.'">';
|
||||
echo $semrow;
|
||||
echo '</OPTION>';
|
||||
}
|
||||
}
|
||||
echo '</SELECT><br /><br />';
|
||||
|
||||
$konto = new konto();
|
||||
|
||||
$buchungstypen = array();
|
||||
if(defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
{
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
$buchungstypen = unserialize (CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN);
|
||||
}
|
||||
|
||||
$stsem_zahlung = $konto->getLastStSemBuchungstypen($uid, $buchungstypen, $stsem);
|
||||
if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung)
|
||||
{
|
||||
echo "<a href='../pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=".$stsem."&uid=".$uid."&xsl_stg_kz=".$xsl_stg_kz."'>".$p->t('tools/inskriptionsbestaetigung')."</a>";
|
||||
$path = "../pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=".$stsem."&uid=".$uid."&xsl_stg_kz=".$xsl_stg_kz;
|
||||
echo '<a href="'.$path.'">'.$p->t('tools/inskriptionsbestaetigung').'</a>';
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem));
|
||||
echo '<br /><br />';
|
||||
}
|
||||
else
|
||||
echo $p->t('tools/inskriptionsbestaetigung')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
|
||||
echo "<hr>";
|
||||
|
||||
if(defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN)
|
||||
{
|
||||
if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung)
|
||||
{
|
||||
echo "<a href='../pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=".$stsem."&uid=".$uid."'>".$p->t('tools/studienbuchblatt')."</a>";
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem));
|
||||
}
|
||||
else
|
||||
echo $p->t('tools/studienbuchblatt')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
|
||||
echo "<hr>";
|
||||
echo $p->t('tools/inskriptionsbestaetigung');
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
echo '<br /><br />';
|
||||
}
|
||||
|
||||
if(defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN)
|
||||
if (defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN)
|
||||
{
|
||||
if ($stsem_zahlung != FALSE && $stsem == $stsem_zahlung)
|
||||
{
|
||||
$pfad = "../pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=".$stsem."&uid=".$uid;
|
||||
echo '<a href="'.$pfad.'">'.$p->t('tools/studienbuchblatt').'</a>';
|
||||
echo ' - '.$p->t('tools/studienbeitragFuerSSBezahlt',array($stsem));
|
||||
}
|
||||
else
|
||||
echo $p->t('tools/studienbuchblatt')." - ".$p->t('tools/studienbeitragFuerSSNochNichtBezahlt',array($stsem));
|
||||
|
||||
echo '<br /><br />';
|
||||
}
|
||||
|
||||
if (defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN)
|
||||
{
|
||||
echo "<a href='studienerfolgsbestaetigung.php?".$getParam."' class='Item'>".$p->t('tools/studienerfolgsbestaetigung')." Deutsch</a><br>";
|
||||
echo "<a href='studienerfolgsbestaetigung.php?lang=en".$getParam."' class='Item'>".$p->t('tools/studienerfolgsbestaetigung')." Englisch</a>";
|
||||
echo "<hr>";
|
||||
echo "<br />";
|
||||
}
|
||||
echo "<br>";
|
||||
echo "<br />";
|
||||
|
||||
$akte = new akte();
|
||||
if($akte->getArchiv($student_studiengang->person_id, true, true) && count($akte->result)>0)
|
||||
{
|
||||
echo '
|
||||
<h2>Abschlussdokumente</h2>
|
||||
<table id="t1" style="width:auto;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Erstelldatum</th>
|
||||
<th>Dokument</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
';
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
foreach($akte->result as $row)
|
||||
{
|
||||
$pfad = 'dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid;
|
||||
echo '<tr>';
|
||||
echo '<td>'.$datum_obj->formatDatum($row->erstelltam,'d.m.Y').'</td>';
|
||||
echo '<td><a href="'.$pfad.'"><img src="../../../skin/images/pdfpic.gif" /> '.$row->bezeichnung.'</a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
echo '</tbody></table>';
|
||||
}
|
||||
echo '</body>
|
||||
</html>
|
||||
';
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -47,7 +47,7 @@ $p=new phrasen($sprache);
|
||||
if (!$db = new basis_db())
|
||||
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
|
||||
|
||||
$uid=get_uid();
|
||||
$uid = get_uid();
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
@@ -129,11 +129,11 @@ echo '<!DOCTYPE HTML>
|
||||
<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/flexcrollstyles.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
@@ -323,7 +323,10 @@ if(!$ansicht && (!defined('CIS_PROFIL_FHAUSWEIS_ANZEIGEN') || CIS_PROFIL_FHAUSWE
|
||||
$bm = new betriebsmittel();
|
||||
if($bm->zutrittskarteAusgegeben($user->uid))
|
||||
{
|
||||
echo '<br>'.$p->t('profil/fhausweisWurdeBereitsAusgegeben');
|
||||
//wenn es mehr Zutrittskarten gab, wird das letzte Ausgabedatum erhalten
|
||||
$ausgegeben_am = $bm->result;
|
||||
$ausgegeben_am = $datum_obj->formatDatum($ausgegeben_am, 'd.m.Y');
|
||||
echo '<br>'.$p->t('profil/fhausweisWurdeBereitsAusgegeben', array($ausgegeben_am));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -275,11 +275,7 @@ function getActualUserAmpelData($user_ampel_arr, $semester_start)
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/fhcomplete.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="../../../skin/jquery.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/components/jquery/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<title><?php echo $p->t('tools/ampelsystem') ?></title>
|
||||
@@ -346,7 +342,7 @@ $(document).ready(function(){
|
||||
<?php
|
||||
//title in CIS
|
||||
if (!$is_popup)
|
||||
echo '<h2>' . $p->t('tools/ampelsystem') . '</h2>';
|
||||
echo '<h3>' . $p->t('tools/ampelsystem') . '</h3>';
|
||||
|
||||
//title in popup for mandatory ampeln
|
||||
if ($is_popup)
|
||||
@@ -402,10 +398,33 @@ $(document).ready(function(){
|
||||
|
||||
$cnt = 1; //counter to set iterative id's
|
||||
$cnt_inactive = 1; //counter to set only one heading line for inactive ampeln
|
||||
$cnt_active = 0;
|
||||
|
||||
//show panel "no actual ampeln" if there are no active ampeln
|
||||
foreach ($user_ampel_arr as $user_ampel)
|
||||
{
|
||||
if ($user_ampel['active'] == true)
|
||||
$cnt_active++;
|
||||
}
|
||||
|
||||
if ($cnt_active == 0)
|
||||
{
|
||||
echo '
|
||||
<div class="panel">
|
||||
<div class="row" style="margin-bottom: 15px; padding-left: 15px;">
|
||||
<div class="panel-heading" style="background-color: transparent" role="tab" id="heading">
|
||||
<h4>' . $p->t('tools/ampelKeineAktuellen'). '</h4>
|
||||
<small>' . $p->t('tools/ampelKeineAktuellenTxt'). '</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
}
|
||||
|
||||
//fill panel with ampeln
|
||||
foreach ($user_ampel_arr as $user_ampel)
|
||||
{
|
||||
|
||||
//use only ampeln that are not overdue
|
||||
if ($user_ampel['show_ampel'] == true)
|
||||
{
|
||||
@@ -416,7 +435,7 @@ $(document).ready(function(){
|
||||
<div class="panel">
|
||||
<div class="row" style="margin-bottom: 15px; padding-left: 15px;">
|
||||
<div class="panel-heading" style="background-color: transparent" role="tab" id="heading">
|
||||
<h3>' . $p->t('tools/ampelAbgelaufenTitel'). '</h3>
|
||||
<h4>' . $p->t('tools/ampelAbgelaufenTitel'). '</h4>
|
||||
<small>' . $p->t('tools/ampelAbgelaufenTxt'). '</small>
|
||||
</div>
|
||||
</div>
|
||||
@@ -428,12 +447,12 @@ $(document).ready(function(){
|
||||
<div class="row" style="margin-bottom: 15px">
|
||||
<div class="panel-heading <?php if ($user_ampel['abgelaufen'] || $user_ampel['bestaetigt']) echo 'text-muted' ?>" style="background-color: transparent" role="tab" id="heading<?php echo $cnt ?>">
|
||||
<div class="col-xs-4">
|
||||
<h4 style="text-decoration: none" class="panel-title">
|
||||
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion"
|
||||
<h5 class="panel-title" style="text-decoration: none; font-size: 14px;">
|
||||
<a class="collapsed" style="text-decoration: none;" role="button" data-toggle="collapse" data-parent="#accordion"
|
||||
href="#collapse<?php echo $cnt ?>" aria-expanded="false" aria-controls="collapse<?php echo $cnt ?>">
|
||||
<?php echo $user_ampel['kurzbz'] ?>
|
||||
</a>
|
||||
</h4>
|
||||
</h5>
|
||||
<small <?php if ($user_ampel['status'] == 'rot' && !$user_ampel['abgelaufen']) echo 'style="color: red; font-weight : bold;"'?>><?php echo $p->t('global/faelligAm') . ' '; echo date('d.m.Y', strtotime($user_ampel['deadline'])) ?></small>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
@@ -465,7 +484,7 @@ $(document).ready(function(){
|
||||
</div>
|
||||
<div id="collapse<?php echo $cnt ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading<?php echo $cnt ?>">
|
||||
<div class="panel-body" style="font-size: 12px;">
|
||||
<?php echo $user_ampel['beschreibung'][$sprache]?>
|
||||
<?php echo $user_ampel['beschreibung'][$sprache] ?>
|
||||
<p><br></p>
|
||||
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?ampel_id='. urlencode($user_ampel['ampel_id']) . '&type=bestaetigen'; ?>">
|
||||
<button type="type" type="submit" class="btn btn-default pull-right"
|
||||
|
||||
@@ -91,12 +91,12 @@ $fieldheadings = array(
|
||||
if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung'))
|
||||
{
|
||||
$za_simple = 0;
|
||||
$activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde');
|
||||
$activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde', 'Ersatzruhe');
|
||||
}
|
||||
else
|
||||
{
|
||||
$za_simple = 1;
|
||||
$activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde');
|
||||
$activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde', 'Ersatzruhe');
|
||||
}
|
||||
|
||||
$activities_str = "'".implode("','", $activities)."'";
|
||||
@@ -1096,6 +1096,8 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$wochensumme='00:00';
|
||||
$extlehrearr=array();
|
||||
$elsumme = '00:00';
|
||||
$ersumme = '00:00';
|
||||
$ersumme_woche = '00:00';
|
||||
$datum_obj = new datum();
|
||||
$tagesbeginn = '';
|
||||
$tagesende = '';
|
||||
@@ -1168,13 +1170,18 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
else
|
||||
$langindex = 2;
|
||||
echo '<b>'.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').'</b> <span id="tag_'.$datum->formatDatum($tag,'d_m_Y').'">'.$zeitsperre_text.'</span>';
|
||||
|
||||
if ($ersumme != '00:00')
|
||||
$erstr = ' (+ '.$ersumme.' ER)';
|
||||
else
|
||||
{
|
||||
$erstr = '';
|
||||
}
|
||||
echo '</td>
|
||||
<td align="right" colspan="2" '.$style.'>
|
||||
<b>'.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'</b><br>LehreExtern /
|
||||
'.$p->t("zeitaufzeichnung/pause").' '.($pflichtpause==false?$p->t("zeitaufzeichnung/inklusivePflichtpause"):'').':
|
||||
</td>
|
||||
<td '.$style.' align="right"><b>'.$tagessaldo.'</b><br>'.date('H:i', ($pausesumme-3600)).'</td>
|
||||
<td '.$style.' align="right"><b>'.$tagessaldo.$erstr.'</b><br>'.date('H:i', ($pausesumme-3600)).'</td>
|
||||
<td '.$style.' colspan="3" align="right">';
|
||||
if ($tag > $sperrdatum)
|
||||
echo '<a href="?von_datum='.$datum->formatDatum($tag,'d.m.Y').'&bis_datum='.$datum->formatDatum($tag,'d.m.Y').'" class="item"><-</a>';
|
||||
@@ -1185,6 +1192,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$tagessumme='00:00';
|
||||
$pausesumme='00:00';
|
||||
$elsumme='00:00';
|
||||
$ersumme = '00:00';
|
||||
$extlehrearr = array();
|
||||
$tagesbeginn = '';
|
||||
$tagesende = '';
|
||||
@@ -1202,13 +1210,19 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$woche = $datumwoche;
|
||||
if($woche!=$datumwoche)
|
||||
{
|
||||
if ($ersumme_woche != '00:00')
|
||||
$erstr = ' (+ '.$ersumme_woche.')';
|
||||
else
|
||||
{
|
||||
$erstr = '';
|
||||
}
|
||||
echo '
|
||||
|
||||
|
||||
<tr>
|
||||
<th colspan="'.$colspan.'" style="background-color: #8DBDD8;"></th>
|
||||
<th style="background-color: #8DBDD8;" align="right" colspan="2" style="font-weight: normal;"><b>'.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").':</b></th>
|
||||
<th style="background-color: #8DBDD8;" align="right" style="font-weight: normal;"><b>'.$wochensaldo.'</b></th>
|
||||
<th style="background-color: #8DBDD8;" align="right" style="font-weight: normal;"><b>'.$wochensaldo.$erstr.'</b></th>
|
||||
<th style="background-color: #8DBDD8;" colspan="3"></th>
|
||||
</tr>
|
||||
|
||||
@@ -1230,6 +1244,8 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$tagessumme='00:00';
|
||||
$pausesumme='00:00';
|
||||
$wochensaldo = '00:00';
|
||||
$ersumme = '00:00';
|
||||
$ersumme_woche = '00:00';
|
||||
}
|
||||
if ($row->uid)
|
||||
{
|
||||
@@ -1243,12 +1259,17 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$pflichtpause = true;
|
||||
}
|
||||
}
|
||||
elseif ($row->aktivitaet_kurzbz=='Ersatzruhe')
|
||||
{
|
||||
$ersumme = $datum_obj->sumZeit($ersumme, $row->diff);
|
||||
$ersumme_woche = $datum_obj->sumZeit($ersumme_woche, $row->diff);
|
||||
}
|
||||
else
|
||||
$tagessumme = $datum_obj->sumZeit($tagessumme, $row->diff);
|
||||
$style = '';
|
||||
if ($row->zeitaufzeichnung_id == $zeitaufzeichnung_id)
|
||||
$style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"';
|
||||
if ($row->aktivitaet_kurzbz=='Pause' || $row->aktivitaet_kurzbz=='LehreExtern')
|
||||
if ($row->aktivitaet_kurzbz=='Pause' || $row->aktivitaet_kurzbz=='LehreExtern'|| $row->aktivitaet_kurzbz=='Ersatzruhe')
|
||||
$style .= ' style="color: grey;"';
|
||||
$summe = $row->summe;
|
||||
$service = new service();
|
||||
@@ -1281,10 +1302,10 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
echo "</td>\n";
|
||||
echo " </tr>\n";
|
||||
|
||||
if (($tagesbeginn=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern')
|
||||
if (($tagesbeginn=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern' && $row->aktivitaet_kurzbz != 'Ersatzruhe')
|
||||
$tagesbeginn = $row->start;
|
||||
|
||||
if (($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern')
|
||||
if (($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern' && $row->aktivitaet_kurzbz != 'Ersatzruhe')
|
||||
$tagesende = $row->ende;
|
||||
if ($row->aktivitaet_kurzbz == 'LehreExtern')
|
||||
$extlehrearr[] = array("start"=>$row->start, "ende"=>$row->ende, "diff"=>$row->diff);
|
||||
|
||||
+270
-281
@@ -1,281 +1,270 @@
|
||||
{
|
||||
"name": "fh-complete/fhc-core",
|
||||
"type": "app",
|
||||
"description": "FH-Complete Core",
|
||||
"keywords": [
|
||||
"fhc",
|
||||
"fh-complete",
|
||||
"campusmanagement"
|
||||
],
|
||||
"homepage": "https://github.com/FH-Complete/FHC-Core",
|
||||
"license": "GPLv3",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Paminger",
|
||||
"email": "christian.paminger@fhcomplete.org",
|
||||
"homepage": "http://fhcomplete.org"
|
||||
},
|
||||
{
|
||||
"name": "Andreas Österreicher",
|
||||
"email": "oesi@technikum-wien.at",
|
||||
"homepage": "http://fhcomplete.org"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"email": "info@fhcomplete.org",
|
||||
"forum": "https://plus.google.com/communities/113278802529782592610",
|
||||
"wiki": "http://wiki.fhcomplete.org/"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "codeigniter-restserver",
|
||||
"version": "2.6",
|
||||
"dist": {
|
||||
"url": "https://github.com/chriskacerguis/codeigniter-restserver/archive/master.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jsoneditor",
|
||||
"version": "5.5.6",
|
||||
"dist": {
|
||||
"url": "https://github.com/josdejong/jsoneditor/archive/v5.5.6.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "json-forms",
|
||||
"version": "1.4.0",
|
||||
"dist": {
|
||||
"url": "https://github.com/brutusin/json-forms/archive/v1.4.0.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "borgar/textile-js",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"url": "https://github.com/borgar/textile-js.git",
|
||||
"type": "git",
|
||||
"reference": "master"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "rmariuzzo/jquery-checkboxes",
|
||||
"version": "1.0.7",
|
||||
"source": {
|
||||
"url": "https://github.com/rmariuzzo/checkboxes.js.git",
|
||||
"type": "git",
|
||||
"reference": "081cac1eb9b504dc32be27b57f32f6d1d29a5253"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery/jqueryV1",
|
||||
"version": "1.12.4",
|
||||
"dist": {
|
||||
"type": "file",
|
||||
"url": "https://code.jquery.com/jquery-1.12.4.min.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery/jqueryV2",
|
||||
"version": "2.2.4",
|
||||
"dist": {
|
||||
"type": "file",
|
||||
"url": "https://code.jquery.com/jquery-2.2.4.min.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "fgelinas/timepicker",
|
||||
"version": "0.3.3",
|
||||
"dist": {
|
||||
"url": "https://fgelinas.com/code/timepicker/releases/jquery-ui-timepicker-0.3.3.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "alvaro-prieto/colResizable",
|
||||
"version": "1.6",
|
||||
"dist": {
|
||||
"url": "https://github.com/alvaro-prieto/colResizable/archive/1.6.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "tapmodo/Jcrop",
|
||||
"version": "2.0.4",
|
||||
"dist": {
|
||||
"url": "https://github.com/tapmodo/Jcrop/archive/v2.0.4.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery-archive/jquery-metadata",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"url": "https://github.com/jquery-archive/jquery-metadata.git",
|
||||
"type": "git",
|
||||
"reference": "e5a9e4315675bf4d68716872ca754e858088f8ab"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "tomazdragar/SimpleCropper",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"url": "https://github.com/tomazdragar/SimpleCropper.git",
|
||||
"type": "git",
|
||||
"reference": "9750b81fa55ed07b3b429297d18ffbeac07a2cde"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "joeldbirch/superfish",
|
||||
"version": "1.7.9",
|
||||
"dist": {
|
||||
"url": "https://github.com/joeldbirch/superfish/archive/v1.7.9.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery/sizzle",
|
||||
"version": "1.0",
|
||||
"dist": {
|
||||
"url": "https://github.com/jquery/sizzle/archive/1.0.0.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "nicolaskruchten/pivottable",
|
||||
"version": "2.15.0",
|
||||
"source": {
|
||||
"url": "https://github.com/nicolaskruchten/pivottable.git",
|
||||
"type": "git",
|
||||
"reference": "b15ea33268b587d986371c0b6f215c36ffbb860c"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
|
||||
"version": "3.3.7",
|
||||
"source": {
|
||||
"url": "https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git",
|
||||
"type": "git",
|
||||
"reference": "master"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
|
||||
"alvaro-prieto/colResizable": "^1.6",
|
||||
"borgar/textile-js": "1.0",
|
||||
"BlackrockDigital/startbootstrap-sb-admin-2": "^3.3",
|
||||
"christianbach/tablesorter": "^1.0",
|
||||
|
||||
"codeigniter/framework": "3.*",
|
||||
"codeigniter-restserver": "2.6",
|
||||
|
||||
"components/jquery": "^3.2",
|
||||
"components/jqueryui": "^1.12",
|
||||
"components/font-awesome": "^4.7",
|
||||
"components/angular.js": "1.3.16",
|
||||
|
||||
"easyrdf/easyrdf": "0.9.*",
|
||||
"fgelinas/timepicker": "^0.3.3",
|
||||
"fzaninotto/faker": "1.*",
|
||||
"joeldbirch/superfish": "^1.7",
|
||||
|
||||
"jquery/jqueryV1": "^1.12",
|
||||
"jquery/jqueryV2": "^2.2",
|
||||
"jquery/sizzle": "^1.0",
|
||||
|
||||
"jquery-archive/jquery-metadata": "^1.0",
|
||||
|
||||
"json-forms": "1.4.0",
|
||||
"jsoneditor": "5.5.6",
|
||||
"kingsquare/json-schema-form": "*",
|
||||
"michelf/php-markdown": "1.5.0",
|
||||
"ml/json-ld": "1.*",
|
||||
"mottie/tablesorter": "^2.29",
|
||||
"netcarver/textile": "^3.5",
|
||||
"nicolaskruchten/pivottable": "^2.15.0",
|
||||
"rmariuzzo/jquery-checkboxes": "1.0.7",
|
||||
|
||||
"rougin/combustor": "1.1.*",
|
||||
"rougin/refinery": "*",
|
||||
|
||||
"tapmodo/Jcrop": "^2.0",
|
||||
"tinymce/tinymce": "4.*",
|
||||
"tomazdragar/SimpleCropper": "^1.0",
|
||||
"twbs/bootstrap": "^3.3",
|
||||
|
||||
"zetacomponents/workflow": "1.*",
|
||||
"zetacomponents/document": "1.*",
|
||||
"zetacomponents/workflow-database-tiein": "1.*",
|
||||
"zetacomponents/workflow-event-log-tiein": "1.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"squizlabs/php_codesniffer": "2.*"
|
||||
},
|
||||
"config": {
|
||||
"bin-dir": "vendor/bin"
|
||||
},
|
||||
"extra": {
|
||||
"merge-plugin": {
|
||||
"include": [
|
||||
"composer.json",
|
||||
"addons/*/composer.json"
|
||||
],
|
||||
"recurse": true,
|
||||
"replace": false,
|
||||
"merge-dev": false,
|
||||
"merge-extra": false
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"name": "fh-complete/fhc-core",
|
||||
"type": "app",
|
||||
"description": "FH-Complete Core",
|
||||
"keywords": [
|
||||
"fhc",
|
||||
"fh-complete",
|
||||
"campusmanagement"
|
||||
],
|
||||
"homepage": "https://github.com/FH-Complete/FHC-Core",
|
||||
"license": "GPLv3",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Paminger",
|
||||
"email": "christian.paminger@fhcomplete.org",
|
||||
"homepage": "http://fhcomplete.org"
|
||||
},
|
||||
{
|
||||
"name": "Andreas Österreicher",
|
||||
"email": "oesi@technikum-wien.at",
|
||||
"homepage": "http://fhcomplete.org"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"email": "info@fhcomplete.org",
|
||||
"forum": "https://plus.google.com/communities/113278802529782592610",
|
||||
"wiki": "http://wiki.fhcomplete.org/"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "codeigniter-restserver",
|
||||
"version": "2.6",
|
||||
"dist": {
|
||||
"url": "https://github.com/chriskacerguis/codeigniter-restserver/archive/master.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jsoneditor",
|
||||
"version": "5.5.6",
|
||||
"dist": {
|
||||
"url": "https://github.com/josdejong/jsoneditor/archive/v5.5.6.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "json-forms",
|
||||
"version": "1.4.0",
|
||||
"dist": {
|
||||
"url": "https://github.com/brutusin/json-forms/archive/v1.4.0.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "borgar/textile-js",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"url": "https://github.com/borgar/textile-js.git",
|
||||
"type": "git",
|
||||
"reference": "master"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "rmariuzzo/jquery-checkboxes",
|
||||
"version": "1.0.7",
|
||||
"source": {
|
||||
"url": "https://github.com/rmariuzzo/checkboxes.js.git",
|
||||
"type": "git",
|
||||
"reference": "081cac1eb9b504dc32be27b57f32f6d1d29a5253"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery/jqueryV1",
|
||||
"version": "1.12.4",
|
||||
"dist": {
|
||||
"type": "file",
|
||||
"url": "https://code.jquery.com/jquery-1.12.4.min.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery/jqueryV2",
|
||||
"version": "2.2.4",
|
||||
"dist": {
|
||||
"type": "file",
|
||||
"url": "https://code.jquery.com/jquery-2.2.4.min.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "fgelinas/timepicker",
|
||||
"version": "0.3.3",
|
||||
"dist": {
|
||||
"url": "https://fgelinas.com/code/timepicker/releases/jquery-ui-timepicker-0.3.3.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "alvaro-prieto/colResizable",
|
||||
"version": "1.6",
|
||||
"dist": {
|
||||
"url": "https://github.com/alvaro-prieto/colResizable/archive/1.6.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "tapmodo/Jcrop",
|
||||
"version": "2.0.4",
|
||||
"dist": {
|
||||
"url": "https://github.com/tapmodo/Jcrop/archive/v2.0.4.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery-archive/jquery-metadata",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"url": "https://github.com/jquery-archive/jquery-metadata.git",
|
||||
"type": "git",
|
||||
"reference": "e5a9e4315675bf4d68716872ca754e858088f8ab"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "tomazdragar/SimpleCropper",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"url": "https://github.com/tomazdragar/SimpleCropper.git",
|
||||
"type": "git",
|
||||
"reference": "9750b81fa55ed07b3b429297d18ffbeac07a2cde"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "joeldbirch/superfish",
|
||||
"version": "1.7.9",
|
||||
"dist": {
|
||||
"url": "https://github.com/joeldbirch/superfish/archive/v1.7.9.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "jquery/sizzle",
|
||||
"version": "1.0",
|
||||
"dist": {
|
||||
"url": "https://github.com/jquery/sizzle/archive/1.0.0.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "nicolaskruchten/pivottable",
|
||||
"version": "2.15.0",
|
||||
"source": {
|
||||
"url": "https://github.com/nicolaskruchten/pivottable.git",
|
||||
"type": "git",
|
||||
"reference": "b15ea33268b587d986371c0b6f215c36ffbb860c"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
|
||||
"version": "3.3.7",
|
||||
"source": {
|
||||
"url": "https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git",
|
||||
"type": "git",
|
||||
"reference": "master"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
|
||||
"alvaro-prieto/colResizable": "^1.6",
|
||||
"borgar/textile-js": "1.0",
|
||||
"BlackrockDigital/startbootstrap-sb-admin-2": "^3.3",
|
||||
"christianbach/tablesorter": "^1.0",
|
||||
|
||||
"codeigniter/framework": "3.*",
|
||||
"codeigniter-restserver": "2.6",
|
||||
|
||||
"components/jquery": "^3.2",
|
||||
"components/jqueryui": "^1.12",
|
||||
"components/font-awesome": "^4.7",
|
||||
"components/angular.js": "1.3.16",
|
||||
|
||||
"easyrdf/easyrdf": "0.9.*",
|
||||
"fgelinas/timepicker": "^0.3.3",
|
||||
"fzaninotto/faker": "1.*",
|
||||
"joeldbirch/superfish": "^1.7",
|
||||
|
||||
"jquery/jqueryV1": "^1.12",
|
||||
"jquery/jqueryV2": "^2.2",
|
||||
"jquery/sizzle": "^1.0",
|
||||
|
||||
"jquery-archive/jquery-metadata": "^1.0",
|
||||
|
||||
"json-forms": "1.4.0",
|
||||
"jsoneditor": "5.5.6",
|
||||
"kingsquare/json-schema-form": "*",
|
||||
"michelf/php-markdown": "1.5.0",
|
||||
"ml/json-ld": "1.*",
|
||||
"mottie/tablesorter": "^2.29",
|
||||
"netcarver/textile": "^3.5",
|
||||
"nicolaskruchten/pivottable": "^2.15.0",
|
||||
"rmariuzzo/jquery-checkboxes": "1.0.7",
|
||||
|
||||
"rougin/combustor": "1.1.*",
|
||||
"rougin/refinery": "*",
|
||||
|
||||
"tapmodo/Jcrop": "^2.0",
|
||||
"tinymce/tinymce": "4.*",
|
||||
"tomazdragar/SimpleCropper": "^1.0",
|
||||
"twbs/bootstrap": "^3.3",
|
||||
|
||||
"zetacomponents/workflow": "1.*",
|
||||
"zetacomponents/document": "1.*",
|
||||
"zetacomponents/workflow-database-tiein": "1.*",
|
||||
"zetacomponents/workflow-event-log-tiein": "1.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"squizlabs/php_codesniffer": "2.*"
|
||||
},
|
||||
"config": {
|
||||
"bin-dir": "vendor/bin"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,219 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 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: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/* Erstellt einen Lehrauftrag im PDF Format
|
||||
*
|
||||
* Erstellt ein XML File Transformiert dieses mit
|
||||
* Hilfe der XSL-FO Vorlage aus der DB und generiert
|
||||
* daraus ein PDF (xslfo2pdf)
|
||||
*/
|
||||
session_cache_limiter('none'); //muss gesetzt werden sonst funktioniert der Download mit IE8 nicht
|
||||
session_start();
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/xslfo2pdf/xslfo2pdf.php');
|
||||
require_once('../include/fop.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
|
||||
//Parameter holen
|
||||
if(isset($_GET['xml']))
|
||||
$xml=$_GET['xml'];
|
||||
else
|
||||
die('Fehlerhafte1 Parameteruebergabe');
|
||||
|
||||
|
||||
if(isset($_GET['xsl']))
|
||||
$xsl=$_GET['xsl'];
|
||||
else
|
||||
die('Fehlerhafte2 Parameteruebergabe');
|
||||
|
||||
$xsl_stg_kz=0;
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
else
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
else
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
if(strstr($_GET['uid'],';'))
|
||||
$uids = explode(';',$_GET['uid']);
|
||||
else
|
||||
$uids = $_GET['uid'];
|
||||
|
||||
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($uids[1]);
|
||||
if($result_std = $db->db_query($qry))
|
||||
if($db->db_num_rows($result_std)==1)
|
||||
{
|
||||
$row_std = $db->db_fetch_object($result_std);
|
||||
$xsl_stg_kz=$row_std->studiengang_kz;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz'];
|
||||
else
|
||||
$xsl_oe_kurzbz='';
|
||||
|
||||
//Parameter setzen
|
||||
$params='?xmlformat=xml';
|
||||
if(isset($_GET['uid']))
|
||||
$params.='&uid='.$_GET['uid'];
|
||||
if(isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$version = $_GET['version'];
|
||||
else
|
||||
$version ='';
|
||||
|
||||
$output = (isset($_GET['output'])?$_GET['output']:'odt');
|
||||
|
||||
//Berechtigung pruefen
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
$xml_url=XML_ROOT.$xml.$params;
|
||||
|
||||
// Load the XML source
|
||||
$xml_doc = new DOMDocument;
|
||||
|
||||
if(!$xml_doc->load($xml_url))
|
||||
die('unable to load xml: '.$xml_url);
|
||||
|
||||
//XSL aus der DB holen
|
||||
$vorlage = new vorlage();
|
||||
if($xsl_oe_kurzbz!='')
|
||||
{
|
||||
$vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
|
||||
$xsl_content = $vorlage->text;
|
||||
loadVariables($user);
|
||||
|
||||
if (!isset($_REQUEST["archive"]))
|
||||
{
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tempfolder = '/tmp/'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, 'AusbildStatus', $version);
|
||||
$xsl_content = $vorlage->text;
|
||||
|
||||
|
||||
$xsl_doc = new DOMDocument;
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer1 = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
chdir($tempfolder);
|
||||
file_put_contents('styles.xml', $buffer1);
|
||||
|
||||
|
||||
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/Ausbildungsver.'.$endung;
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
clearstatcache();
|
||||
|
||||
if($output == 'pdf')
|
||||
{
|
||||
$tempPdfName = 'Ausbildungsver.pdf';
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$tempPdfName.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='odt')
|
||||
{
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="Ausbildungsver.odt"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
unlink('content.xml');
|
||||
unlink('styles.xml');
|
||||
unlink($tempname_zip);
|
||||
if($output=='pdf')
|
||||
unlink($tempPdfName);
|
||||
rmdir($tempfolder);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
+222
-575
@@ -16,14 +16,14 @@
|
||||
* 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>.
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
/* Erstellt diverse Dokumente
|
||||
*
|
||||
* Erstellt ein XML File Transformiert dieses mit
|
||||
* Hilfe der XSL-FO Vorlage aus der DB und generiert
|
||||
* daraus ein PDF mittels xslfo2pdf bzw unoconv
|
||||
* daraus ein PDF mittels unoconv
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -34,18 +34,17 @@ session_start();*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/xslfo2pdf/xslfo2pdf.php');
|
||||
require_once('../include/fop.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
require_once('../include/prestudent.class.php');
|
||||
require_once('../include/variable.class.php');
|
||||
require_once('../include/addon.class.php');
|
||||
require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/studiengang.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/studienordnung.class.php');
|
||||
//require_once('../include/betriebsmittel.class.php');
|
||||
require_once('../include/dokument_export.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
@@ -54,125 +53,97 @@ $variable_obj = new variable();
|
||||
$variable_obj->loadVariables($user);
|
||||
|
||||
//Parameter holen
|
||||
if(isset($_GET['xml']))
|
||||
$xml=$_GET['xml'];
|
||||
if (isset($_GET['xml']))
|
||||
$xml = $_GET['xml'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
if(isset($_GET['xsl']))
|
||||
$xsl=$_GET['xsl'];
|
||||
if (isset($_GET['xsl']))
|
||||
$xsl = $_GET['xsl'];
|
||||
else
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
|
||||
if(isset($_GET['sign']))
|
||||
$sign = true;
|
||||
else
|
||||
$sign = false;
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz=0;
|
||||
$xsl_stg_kz = 0;
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
if (isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz = $_GET['xsl_stg_kz'];
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
if (isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz = $_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen
|
||||
// in dem der 1. Studierende in der Liste ist
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
if (isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
if(strstr($_GET['uid'],';'))
|
||||
if (strstr($_GET['uid'],';'))
|
||||
$uids = explode(';',$_GET['uid']);
|
||||
else
|
||||
$uids[1] = $_GET['uid'];
|
||||
|
||||
$student_obj = new student();
|
||||
if($student_obj->load($uids[1]))
|
||||
if ($student_obj->load($uids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$student_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
elseif(isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
|
||||
elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
|
||||
{
|
||||
if(strstr($_GET['prestudent_id'],';'))
|
||||
if (strstr($_GET['prestudent_id'],';'))
|
||||
$prestudent_ids = explode(';',$_GET['prestudent_id']);
|
||||
else
|
||||
$prestudent_ids[1] = $_GET['prestudent_id'];
|
||||
|
||||
$prestudent_obj = new prestudent();
|
||||
if($prestudent_obj->load($prestudent_ids[1]))
|
||||
if ($prestudent_obj->load($prestudent_ids[1]))
|
||||
{
|
||||
$xsl_stg_kz=$prestudent_obj->studiengang_kz;
|
||||
$xsl_stg_kz = $prestudent_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz'];
|
||||
if (isset($_GET['xsl_oe_kurzbz']))
|
||||
$xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz'];
|
||||
else
|
||||
$xsl_oe_kurzbz='';
|
||||
$xsl_oe_kurzbz = '';
|
||||
|
||||
//Parameter setzen
|
||||
$params='?xmlformat=xml';
|
||||
if(isset($_GET['uid']))
|
||||
$params.='&uid='.urlencode($_GET['uid']);
|
||||
if(isset($_GET['stg_kz']))
|
||||
$params.='&stg_kz='.urlencode($_GET['stg_kz']);
|
||||
if(isset($_GET['person_id']))
|
||||
$params.='&person_id='.urlencode($_GET['person_id']);
|
||||
if(isset($_GET['id']))
|
||||
$params.='&id='.urlencode($_GET['id']);
|
||||
if(isset($_GET['prestudent_id']))
|
||||
$params.='&prestudent_id='.urlencode($_GET['prestudent_id']);
|
||||
if(isset($_GET['buchungsnummern']))
|
||||
$params.='&buchungsnummern='.urlencode($_GET['buchungsnummern']);
|
||||
if(isset($_GET['ss']))
|
||||
$params.='&ss='.urlencode($_GET['ss']);
|
||||
if(isset($_GET['abschlusspruefung_id']))
|
||||
$params.='&abschlusspruefung_id='.urlencode($_GET['abschlusspruefung_id']);
|
||||
if(isset($_GET['typ']))
|
||||
$params.='&typ='.urlencode($_GET['typ']);
|
||||
if(isset($_GET['all']))
|
||||
$params.='&all='.urlencode($_GET['all']);
|
||||
if(isset($_GET['preoutgoing_id']))
|
||||
$params.='&preoutgoing_id='.urlencode($_GET['preoutgoing_id']);
|
||||
if(isset($_GET["lvid"]))
|
||||
$params.='&lvid='.urlencode($_GET["lvid"]);
|
||||
if(isset($_GET['projekt_kurzbz']))
|
||||
$params.='&projekt_kurzbz='.urlencode($_GET['projekt_kurzbz']);
|
||||
if(isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$params = 'xmlformat=xml';
|
||||
|
||||
// GET Parameter die an XML durchgereicht werden
|
||||
foreach ($_GET as $getkey=>$getvalue)
|
||||
{
|
||||
if (in_array($getkey,
|
||||
array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id',
|
||||
'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis',
|
||||
'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort',
|
||||
'abrechnungsmonat', 'form')
|
||||
)
|
||||
)
|
||||
{
|
||||
$params .= '&'.$getkey.'='.urlencode($getvalue);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['vertrag_id']))
|
||||
{
|
||||
foreach($_GET['vertrag_id'] as $id)
|
||||
{
|
||||
$params .= '&vertrag_id[]='.urlencode($id);
|
||||
}
|
||||
}
|
||||
if (isset($_GET['version']) && is_numeric($_GET['version']))
|
||||
$version = $_GET['version'];
|
||||
else
|
||||
$version ='';
|
||||
if(isset($_GET['von']))
|
||||
$params.='&von='.urlencode($_GET['von']);
|
||||
if(isset($_GET['bis']))
|
||||
$params.='&bis='.urlencode($_GET['bis']);
|
||||
if(isset($_GET['stundevon']))
|
||||
$params.='&stundevon='.urlencode($_GET['stundevon']);
|
||||
if(isset($_GET['stundebis']))
|
||||
$params.='&stundebis='.urlencode($_GET['stundebis']);
|
||||
if(isset($_GET['sem']))
|
||||
$params.='&sem='.urlencode($_GET['sem']);
|
||||
if(isset($_GET['lehreinheit']))
|
||||
$params.='&lehreinheit='.urlencode($_GET['lehreinheit']);
|
||||
if(isset($_GET['mitarbeiter_uid']))
|
||||
$params.='&mitarbeiter_uid='.urlencode($_GET['mitarbeiter_uid']);
|
||||
if(isset($_GET['vertrag_id']))
|
||||
{
|
||||
foreach($_GET['vertrag_id'] as $id)
|
||||
{
|
||||
$params.='&vertrag_id[]='.urlencode($id);
|
||||
}
|
||||
}
|
||||
if(isset($_GET['studienordnung_id']))
|
||||
$params.='&studienordnung_id='.urlencode($_GET['studienordnung_id']);
|
||||
if(isset($_GET['fixangestellt']))
|
||||
$params.='&fixangestellt='.urlencode($_GET['fixangestellt']);
|
||||
if(isset($_GET['standort']))
|
||||
$params.='&standort='.urlencode($_GET['standort']);
|
||||
if(isset($_GET['abrechnungsmonat']))
|
||||
$params.='&abrechnungsmonat='.urlencode($_GET['abrechnungsmonat']);
|
||||
if(isset($_GET['form']))
|
||||
$params.='&form='.urlencode($_GET['form']);
|
||||
$version = null;
|
||||
|
||||
$output = (isset($_GET['output'])?$_GET['output']:'odt');
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
@@ -180,21 +151,21 @@ $rechte->getBerechtigungen($user);
|
||||
|
||||
//OE fuer Output ermitteln
|
||||
|
||||
if ($xsl_oe_kurzbz!='')
|
||||
if ($xsl_oe_kurzbz != '')
|
||||
{
|
||||
$oe_kurzbz = $xsl_oe_kurzbz;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$oe = new studiengang();
|
||||
$oe->load($xsl_stg_kz);
|
||||
$oe_kurzbz = $oe->oe_kurzbz;
|
||||
}
|
||||
|
||||
//Darf der User Dokumente in einem NICHT-PDF-Format exportieren?
|
||||
if (isset($_GET['output']) && $_GET['output']!='pdf')
|
||||
if (isset($_GET['output']) && $_GET['output'] != 'pdf')
|
||||
{
|
||||
if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz))
|
||||
{
|
||||
@@ -206,28 +177,12 @@ if (isset($_GET['output']) && $_GET['output']!='pdf')
|
||||
else
|
||||
$output = 'pdf';
|
||||
|
||||
|
||||
//XSL aus der DB holen
|
||||
$vorlage = new vorlage();
|
||||
if($xsl_oe_kurzbz!='')
|
||||
{
|
||||
$vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
|
||||
$xsl_content = $vorlage->text;
|
||||
|
||||
if($xsl_content=='')
|
||||
die('Für diese Organisationseinheit ist keine Vorlage im System hinterlegt');
|
||||
if(!$vorlage->loadVorlage($xsl))
|
||||
die('Vorlage wurde nicht gefunden');
|
||||
|
||||
//Berechtigung pruefen
|
||||
if($xsl=='AccountInfo')
|
||||
if ($xsl == 'AccountInfo')
|
||||
{
|
||||
$isberechtigt = false;
|
||||
|
||||
@@ -235,102 +190,61 @@ if($xsl=='AccountInfo')
|
||||
foreach ($uids as $uid)
|
||||
{
|
||||
//Berechtigung fuer das Drucken des Accountinfoblattes pruefen
|
||||
$qry = "SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'";
|
||||
if($result_ma = $db->db_query($qry))
|
||||
$ma = new mitarbeiter();
|
||||
if($ma->load($uid))
|
||||
{
|
||||
if($db->db_num_rows($result_ma)==1)
|
||||
//Mitarbeiterrechte erforderlich
|
||||
if ($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid'))
|
||||
{
|
||||
//Mitarbeiterrechte erforderlich
|
||||
if($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid'))
|
||||
{
|
||||
$isberechtigt=true;
|
||||
}
|
||||
$isberechtigt = true;
|
||||
}
|
||||
}
|
||||
|
||||
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE student_uid='".addslashes($uid)."'";
|
||||
if($result_std = $db->db_query($qry))
|
||||
$stud = new student();
|
||||
if ($stud->load($uid))
|
||||
{
|
||||
if($db->db_num_rows($result_std)==1)
|
||||
//Rechte pruefen
|
||||
if ($rechte->isBerechtigt('admin', $stud->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('admin', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', $stud->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('support', 0, 'suid'))
|
||||
{
|
||||
$row_std = $db->db_fetch_object($result_std);
|
||||
//Rechte pruefen
|
||||
if($rechte->isBerechtigt('admin', $row_std->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('admin', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', $row_std->studiengang_kz, 'suid') ||
|
||||
$rechte->isBerechtigt('assistenz', 0, 'suid') ||
|
||||
$rechte->isBerechtigt('support', 0, 'suid'))
|
||||
{
|
||||
$isberechtigt=true;
|
||||
}
|
||||
$isberechtigt=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$isberechtigt)
|
||||
if (!$isberechtigt)
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung um dieses AccountInfoBlatt zu drucken';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif(in_array($xsl,array('Lehrveranstaltungszeugnis','Zertifikat','Diplomurkunde','Diplomzeugnis','Bescheid', 'BescheidEng','Bakkurkunde','BakkurkundeEng','Bakkzeugnis',
|
||||
'PrProtokollBakk','PrProtokollDipl','Lehrauftrag','DiplomurkundeEng','Zeugnis','ZeugnisEng','StudienerfolgEng',
|
||||
'Sammelzeugnis','PrProtDiplEng','PrProtBakkEng','BakkzeugnisEng','DiplomzeugnisEng','statusbericht',
|
||||
'DiplSupplement','Zutrittskarte','Projektbeschr','Ausbildungsver','AusbildStatus','PrProtBA','PrProtMA',
|
||||
'PrProtBAEng','PrProtMAEng','Studienordnung','Erfolgsnachweis','ErfolgsnwHead','Studienblatt','LV_Informationen',
|
||||
'LVZeugnis','AnwListBarcode','Honorarvertrag','AusbVerEng','AusbVerEngHead','Zeugnis','ZeugnisNeu','ZeugnisEngNeu','ErfolgsnachweisE','ErfolgsnwHeadE','Magisterurkunde','Masterurkunde',
|
||||
'Defensiourkunde','Magisterzeugnis','Laufzettel','StudienblattEng','Zahlung1','Terminliste','Studienbuchblatt','Veranstaltungen')))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif(in_array($xsl,array('Ressource')))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('lehre/lvplan'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif(in_array($xsl,array('Inskription','Studienerfolg','OutgoingLearning','OutgoingChangeL','LearningAgree','Zahlung','DichiaSost')))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif($xsl=='Uebernahme')
|
||||
{
|
||||
if(!$rechte->isBerechtigt('wawi/inventar') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('basis/betriebsmittel'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif($xsl=='Bestellung')
|
||||
{
|
||||
if(!$rechte->isBerechtigt('wawi/bestellung'))
|
||||
{
|
||||
echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen';
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Wenn Berechtigung direkt beim der Vorlage angegeben ist
|
||||
if(count($vorlage->berechtigung)>0)
|
||||
$vorlagestudiengang = new vorlage();
|
||||
if ($xsl_oe_kurzbz != '')
|
||||
{
|
||||
$allowed=false;
|
||||
foreach($vorlage->berechtigung as $berechtigung_kurzbz)
|
||||
$vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
|
||||
$vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version);
|
||||
}
|
||||
// Wenn Berechtigung direkt beim der Vorlage angegeben ist
|
||||
if (count($vorlagestudiengang->berechtigung)>0)
|
||||
{
|
||||
$allowed = false;
|
||||
foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz)
|
||||
{
|
||||
if($rechte->isBerechtigt($berechtigung_kurzbz))
|
||||
$allowed=true;
|
||||
if ($rechte->isBerechtigt($berechtigung_kurzbz))
|
||||
$allowed = true;
|
||||
}
|
||||
if(!$allowed)
|
||||
if (!$allowed)
|
||||
{
|
||||
echo 'unbekanntes Dokument oder keine Berechtigung';
|
||||
exit;
|
||||
@@ -343,272 +257,100 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$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
|
||||
$xml_doc = new DOMDocument;
|
||||
|
||||
//echo $xml_url;
|
||||
if(!$xml_doc->load($xml_url))
|
||||
die('unable to load xml: '.$xml_url);
|
||||
|
||||
//Pdf erstellen
|
||||
|
||||
//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen
|
||||
$nachname='';
|
||||
if(isset($_GET['uid']) && $_GET['uid']!='')
|
||||
$nachname = '';
|
||||
if (isset($_GET['uid']) && $_GET['uid']!='')
|
||||
{
|
||||
$uid = str_replace(';','',$_GET['uid']);
|
||||
$benutzer_obj = new benutzer();
|
||||
if($benutzer_obj->load($uid))
|
||||
if ($benutzer_obj->load($uid))
|
||||
$nachname = '_'.convertProblemChars($benutzer_obj->nachname);
|
||||
|
||||
}
|
||||
$filename=$xsl.$nachname;
|
||||
$filename = $xsl.$nachname;
|
||||
|
||||
if ($xsl_oe_kurzbz == '')
|
||||
{
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
$stg_obj = new studiengang();
|
||||
if (!$stg_obj->load($xsl_stg_kz))
|
||||
die($stg_obj->errormsg);
|
||||
$xsl_oe_kurzbz = $stg_obj->oe_kurzbz;
|
||||
}
|
||||
|
||||
if($sign === true && $vorlage->signierbar === false)
|
||||
{
|
||||
die('Diese Vorlage darf nicht signiert werden');
|
||||
}
|
||||
|
||||
if (!isset($_REQUEST["archive"]))
|
||||
{
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
$dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version);
|
||||
$dokument->addDataURL($xml, $params);
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tmp = sys_get_temp_dir();
|
||||
$tempfolder = $tmp.'/FHC'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
|
||||
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
{
|
||||
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
|
||||
if($vorlage->style!='')
|
||||
{
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($vorlage->style))
|
||||
die('unable to load xsl from tbl_vorlagestudiengang');
|
||||
}
|
||||
else
|
||||
{
|
||||
$style_xsl=$_GET['style_xsl'];
|
||||
$style_vorlage = new vorlage();
|
||||
$style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version);
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($style_vorlage->text))
|
||||
die('unable to load xsl');
|
||||
}
|
||||
|
||||
// Configure the transformer
|
||||
$style_proc = new XSLTProcessor;
|
||||
$style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules
|
||||
|
||||
$stylebuffer = $style_proc->transformToXml($xml_doc);
|
||||
|
||||
file_put_contents('styles.xml', $stylebuffer);
|
||||
}
|
||||
|
||||
$vorlage_found=false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
if(file_exists($zipfile))
|
||||
{
|
||||
$vorlage_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$vorlage_found)
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
|
||||
clearstatcache();
|
||||
if($vorlage->bezeichnung!='')
|
||||
$filename = $vorlage->bezeichnung.$nachname;
|
||||
else
|
||||
$filename = $vorlage->vorlage_kurzbz.$nachname;
|
||||
if($output == 'pdf')
|
||||
{
|
||||
if($xsl == 'LV_Informationen')
|
||||
{
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Honorarvertrag")
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf';
|
||||
}
|
||||
elseif($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang;
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
}
|
||||
else
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
$filename = $filename.'.pdf';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='odt')
|
||||
{
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang;
|
||||
}
|
||||
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
else if($output =='doc')
|
||||
{
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.doc';
|
||||
if($xsl == "Studienordnung")
|
||||
{
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang.'.doc';
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = $filename.'.doc';
|
||||
}
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName");
|
||||
|
||||
$fsize = filesize($tempPdfName);
|
||||
$handle = fopen($tempPdfName,'r');
|
||||
header('Content-type: application/vnd.ms-word');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
header('Content-Length: '.$fsize);
|
||||
}
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
unlink('content.xml');
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
unlink('styles.xml');
|
||||
unlink($tempname_zip);
|
||||
if($output=='pdf' || $output=='doc')
|
||||
unlink($tempPdfName);
|
||||
rmdir($tempfolder);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(PDF_CREATE_FUNCTION=='FOP')
|
||||
{
|
||||
$fop = new fop();
|
||||
$xml = $xml_doc->saveXML();
|
||||
//$xml = '<personen></personen>';
|
||||
//$xsl='foobar';
|
||||
$fop->generatePdf($xml, $xsl_content, $filename, "D");
|
||||
}
|
||||
/**
|
||||
* Get Filename
|
||||
* TODO cleanup
|
||||
*/
|
||||
if ($vorlage->bezeichnung!='')
|
||||
$filename = $vorlage->bezeichnung.$nachname;
|
||||
else
|
||||
$filename = $vorlage->vorlage_kurzbz.$nachname;
|
||||
|
||||
switch($xsl)
|
||||
{
|
||||
$fo2pdf = new XslFo2Pdf();
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
if (!$fo2pdf->generatePdf($buffer, $filename, "D"))
|
||||
{
|
||||
echo('Failed to generate PDF');
|
||||
}
|
||||
case 'LV_Informationen':
|
||||
$studiengang = new studiengang($_GET['stg_kz']);
|
||||
$studiensemester = new studiensemester($_GET['ss']);
|
||||
$filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz;
|
||||
break;
|
||||
case 'Honorarvertrag':
|
||||
$filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname;
|
||||
break;
|
||||
case 'Studienordnung':
|
||||
$studienordnung = new studienordnung();
|
||||
$studienordnung->loadStudienordnung($_GET['studienordnung_id']);
|
||||
$filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang;
|
||||
break;
|
||||
}
|
||||
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
if ($sign === true)
|
||||
{
|
||||
$dokument->sign($user);
|
||||
}
|
||||
|
||||
if ($dokument->create($output))
|
||||
$dokument->output();
|
||||
else
|
||||
echo $dokument->errormsg;
|
||||
|
||||
$dokument->close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$vorlage->archivierbar)
|
||||
die('Dieses Dokument ist nicht archivierbar');
|
||||
|
||||
// Archivieren von Dokumenten
|
||||
$uid = $_REQUEST["uid"];
|
||||
$heute = date('Y-m-d');
|
||||
|
||||
$student=new student();
|
||||
$student = new student();
|
||||
$student->load($uid);
|
||||
|
||||
if(isset($_REQUEST['ss']))
|
||||
if (isset($_REQUEST['ss']))
|
||||
{
|
||||
$ss = $_REQUEST["ss"];
|
||||
|
||||
$prestudent=new prestudent();
|
||||
$prestudent = new prestudent();
|
||||
$prestudent->getLastStatus($student->prestudent_id,$ss);
|
||||
$semester=$prestudent->ausbildungssemester;
|
||||
$semester = $prestudent->ausbildungssemester;
|
||||
|
||||
$query = "SELECT
|
||||
tbl_studiengang.studiengang_kz, tbl_studentlehrverband.semester, tbl_studiengang.typ,
|
||||
@@ -621,9 +363,9 @@ else
|
||||
AND tbl_studentlehrverband.student_uid = ".$db->db_add_param($uid)."
|
||||
AND tbl_studentlehrverband.studiensemester_kurzbz = ".$db->db_add_param($ss);
|
||||
|
||||
if($result = $db->db_query($query))
|
||||
if ($result = $db->db_query($query))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
if ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$person_id = $row->person_id;
|
||||
$titel = $xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester;
|
||||
@@ -632,7 +374,7 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
$echo = 'Datensatz wurde nicht gefunden';
|
||||
die('Student hat keinen Status in diesem Semester');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -646,170 +388,75 @@ else
|
||||
$bezeichnung = $vorlage->bezeichnung.'_'.$studiengang->kuerzel;
|
||||
}
|
||||
|
||||
if($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid'))
|
||||
if ($rechte->isBerechtigt('admin', $studiengang_kz, 'suid')
|
||||
|| $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid'))
|
||||
{
|
||||
if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument'))
|
||||
$dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version);
|
||||
$dokument->addDataURL($xml, $params);
|
||||
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
$error = false;
|
||||
|
||||
// Beim Archivieren wird das Dokument immer signiert wenn moeglich
|
||||
if($vorlage->signierbar)
|
||||
$sign = true;
|
||||
|
||||
if ($sign === true)
|
||||
{
|
||||
switch($vorlage->mimetype)
|
||||
{
|
||||
case 'application/vnd.oasis.opendocument.text':
|
||||
$endung = 'odt';
|
||||
break;
|
||||
case 'application/vnd.oasis.opendocument.spreadsheet':
|
||||
$endung = 'ods';
|
||||
break;
|
||||
default:
|
||||
$endung = 'pdf';
|
||||
}
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
//echo $buffer;
|
||||
//exit;
|
||||
$tmp = sys_get_temp_dir();
|
||||
$tempfolder = $tmp.'/FHC'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
|
||||
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
{
|
||||
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
|
||||
if($vorlage->style!='')
|
||||
{
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($vorlage->style))
|
||||
die('unable to load xsl from tbl_vorlagestudiengang');
|
||||
}
|
||||
else
|
||||
{
|
||||
$style_xsl=$_GET['style_xsl'];
|
||||
$style_vorlage = new vorlage();
|
||||
$style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version);
|
||||
$style_xsl_doc = new DOMDocument;
|
||||
if(!$style_xsl_doc->loadXML($style_vorlage->text))
|
||||
die('unable to load xsl');
|
||||
}
|
||||
|
||||
// Configure the transformer
|
||||
$style_proc = new XSLTProcessor;
|
||||
$style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules
|
||||
|
||||
$stylebuffer = $style_proc->transformToXml($xml_doc);
|
||||
|
||||
file_put_contents('styles.xml', $stylebuffer);
|
||||
}
|
||||
|
||||
$vorlage_found=false;
|
||||
$addons = new addon();
|
||||
|
||||
foreach($addons->aktive_addons as $addon)
|
||||
{
|
||||
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
if(file_exists($zipfile))
|
||||
{
|
||||
$vorlage_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$vorlage_found)
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung;
|
||||
|
||||
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
exec("zip $tempname_zip content.xml");
|
||||
if(isset($_GET['style_xsl']) || $vorlage->style!='')
|
||||
exec("zip $tempname_zip styles.xml");
|
||||
|
||||
clearstatcache();
|
||||
|
||||
$tempPdfName = $vorlage->vorlage_kurzbz.'.pdf';
|
||||
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName");
|
||||
}
|
||||
$file = $tempfolder.'/'.$tempPdfName;
|
||||
$dokument->sign($user);
|
||||
}
|
||||
|
||||
if ($dokument->create($output))
|
||||
$doc = $dokument->output(false);
|
||||
else
|
||||
{
|
||||
if(PDF_CREATE_FUNCTION=='FOP')
|
||||
$errormsg = $dokument->errormsg;
|
||||
$error = true;
|
||||
}
|
||||
|
||||
$dokument->close();
|
||||
|
||||
if(!$error)
|
||||
{
|
||||
$hex = base64_encode($doc);
|
||||
$akte = new akte();
|
||||
$akte->person_id = $person_id;
|
||||
if($vorlage->dokument_kurzbz!='')
|
||||
$akte->dokument_kurzbz = $vorlage->dokument_kurzbz;
|
||||
else
|
||||
$akte->dokument_kurzbz = 'Zeugnis';
|
||||
$akte->inhalt = $hex;
|
||||
$akte->mimetype = 'application/pdf';
|
||||
$akte->erstelltam = $heute;
|
||||
$akte->gedruckt = true;
|
||||
$akte->titel = $titel.'.pdf';
|
||||
$akte->bezeichnung = $bezeichnung;
|
||||
$akte->updateamum = '';
|
||||
$akte->updatevon = '';
|
||||
$akte->insertamum = date('Y-m-d H:i:s');
|
||||
$akte->insertvon = $user;
|
||||
$akte->ext_id = '';
|
||||
$akte->uid = $uid;
|
||||
$akte->new = true;
|
||||
$akte->archiv = true;
|
||||
$akte->signiert = $sign;
|
||||
$akte->stud_selfservice = $vorlage->stud_selfservice;
|
||||
|
||||
if (!$akte->save())
|
||||
{
|
||||
$fop = new fop();
|
||||
$file = $fop->generatePdf($xml_doc->saveXML(), $xsl_content, $filename, "F");
|
||||
echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = $user;
|
||||
$fo2pdf = new XslFo2Pdf();
|
||||
|
||||
// Load the XSL source
|
||||
$xsl_doc = new DOMDocument;
|
||||
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('unable to load xsl');
|
||||
|
||||
// Configure the transformer
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
|
||||
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
|
||||
if (!$fo2pdf->generatePdf($buffer, $filename, 'F'))
|
||||
{
|
||||
echo('Failed to generate PDF');
|
||||
}
|
||||
$tmp = sys_get_temp_dir();
|
||||
$file = $tmp."/FHC".$filename.".pdf";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
$handle = fopen($file, "rb");
|
||||
$string = fread($handle, filesize($file));
|
||||
fclose($handle);
|
||||
//$string = file_get_contents($file);
|
||||
unlink($file);
|
||||
|
||||
$hex="";
|
||||
//for ($i=0;$i<mb_strlen($string);$i++)
|
||||
// $hex.=(mb_strlen(dechex(ord(mb_substr($string,$i,1)))<2)? "0".dechex(ord(mb_substr($string,$i,1))): dechex(ord(mb_substr($string,$i,1))));
|
||||
|
||||
$hex = base64_encode($string);
|
||||
$akte = new akte();
|
||||
$akte->person_id = $person_id;
|
||||
$akte->dokument_kurzbz = "Zeugnis";
|
||||
$akte->inhalt = $hex;
|
||||
$akte->mimetype = "application/octet-stream";
|
||||
$akte->erstelltam = $heute;
|
||||
$akte->gedruckt = true;
|
||||
$akte->titel = $titel.".pdf";
|
||||
$akte->bezeichnung = $bezeichnung;
|
||||
$akte->updateamum = "";
|
||||
$akte->updatevon = "";
|
||||
$akte->insertamum = date('Y-m-d h:m:s');
|
||||
$akte->insertvon = $user;
|
||||
$akte->ext_id = "";
|
||||
$akte->uid = $uid;
|
||||
$akte->new = true;
|
||||
if (!$akte->save())
|
||||
{
|
||||
echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
echo $errormsg;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -229,7 +229,7 @@ if (isset($_GET['excel']))
|
||||
$maxlength[$i] = 3;
|
||||
|
||||
//Tabellenzeilen
|
||||
$stgs = $rechte->getStgKz();
|
||||
$stgs = $rechte->getStgKz('assistenz');
|
||||
|
||||
if ($stgs[0] == '')
|
||||
$stgwhere = '';
|
||||
@@ -756,7 +756,7 @@ if (isset($_GET['excel']))
|
||||
//zweites Blatt mit Statistik des Vorjahres zum gleichen Datum
|
||||
if (!$mail)
|
||||
{
|
||||
$stgs = $rechte->getStgKz();
|
||||
$stgs = $rechte->getStgKz('assistenz');
|
||||
|
||||
if ($stgs[0] == '')
|
||||
$stgwhere = '';
|
||||
@@ -824,7 +824,12 @@ if (isset($_GET['excel']))
|
||||
person_id=tbl_prestudent.person_id
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
AND anmeldungreihungstest<=".$db->db_add_param($datum)."
|
||||
AND (
|
||||
anmeldedatum<=".$db->db_add_param($datum)."
|
||||
OR
|
||||
(anmeldedatum is null
|
||||
AND tbl_rt_person.insertamum<=".$db->db_add_param($datum).")
|
||||
)
|
||||
)
|
||||
) AS interessentenrtanmeldung,
|
||||
(SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id)
|
||||
@@ -841,7 +846,11 @@ if (isset($_GET['excel']))
|
||||
person_id=tbl_prestudent.person_id
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
AND anmeldungreihungstest<=".$db->db_add_param($datum)."
|
||||
AND (anmeldedatum<=".$db->db_add_param($datum)."
|
||||
OR
|
||||
(anmeldedatum is null
|
||||
AND tbl_rt_person.insertamum<=".$db->db_add_param($datum).")
|
||||
)
|
||||
)
|
||||
) AS interessentenrtanmeldung_m,
|
||||
(SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id)
|
||||
@@ -858,7 +867,11 @@ if (isset($_GET['excel']))
|
||||
person_id=tbl_prestudent.person_id
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
AND anmeldungreihungstest<=".$db->db_add_param($datum)."
|
||||
AND (anmeldedatum<=".$db->db_add_param($datum)."
|
||||
OR
|
||||
(anmeldedatum is null
|
||||
AND tbl_rt_person.insertamum<=".$db->db_add_param($datum).")
|
||||
)
|
||||
)
|
||||
) AS interessentenrtanmeldung_w,
|
||||
(SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
@@ -1451,7 +1464,7 @@ else
|
||||
{
|
||||
if (!$mail)
|
||||
{
|
||||
$stgs = $rechte->getStgKz();
|
||||
$stgs = $rechte->getStgKz('assistenz');
|
||||
|
||||
if ($stgs[0] == '')
|
||||
$stgwhere = '';
|
||||
@@ -1838,7 +1851,7 @@ else
|
||||
// Bewerberstatistik fuer Vorjahr (selbes Datum)
|
||||
if (!$mail)
|
||||
{
|
||||
$stgs = $rechte->getStgKz();
|
||||
$stgs = $rechte->getStgKz('assistenz');
|
||||
|
||||
if ($stgs[0] == '')
|
||||
$stgwhere = '';
|
||||
@@ -1908,7 +1921,11 @@ else
|
||||
person_id=tbl_prestudent.person_id
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
AND anmeldungreihungstest<=".$db->db_add_param($datum)."
|
||||
AND (anmeldedatum<=".$db->db_add_param($datum)."
|
||||
OR
|
||||
(anmeldedatum is null
|
||||
AND tbl_rt_person.insertamum<=".$db->db_add_param($datum).")
|
||||
)
|
||||
)
|
||||
) AS interessentenrtanmeldung,
|
||||
(SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id)
|
||||
@@ -1925,7 +1942,11 @@ else
|
||||
person_id=tbl_prestudent.person_id
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
AND anmeldungreihungstest<=".$db->db_add_param($datum)."
|
||||
AND (anmeldedatum<=".$db->db_add_param($datum)."
|
||||
OR
|
||||
(anmeldedatum is null
|
||||
AND tbl_rt_person.insertamum<=".$db->db_add_param($datum).")
|
||||
)
|
||||
)
|
||||
) AS interessentenrtanmeldung_m,
|
||||
(SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id)
|
||||
@@ -1942,7 +1963,11 @@ else
|
||||
person_id=tbl_prestudent.person_id
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
AND anmeldungreihungstest<=".$db->db_add_param($datum)."
|
||||
AND (anmeldedatum<=".$db->db_add_param($datum)."
|
||||
OR
|
||||
(anmeldedatum is null
|
||||
AND tbl_rt_person.insertamum<=".$db->db_add_param($datum).")
|
||||
)
|
||||
)
|
||||
) AS interessentenrtanmeldung_w,
|
||||
|
||||
@@ -2208,7 +2233,7 @@ function generateMischformenQuery($orgform_arr, $stsem, $ausgeschieden, $stgwher
|
||||
|
||||
foreach ($orgform_arr as $row_orgform)
|
||||
{
|
||||
$qry .= " (SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
$qry .= " (SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Interessent' AND studiensemester_kurzbz=".$db->db_add_param($stsem)."
|
||||
AND orgform_kurzbz=".$db->db_add_param($row_orgform).") AS interessenten_".$row_orgform.",";
|
||||
$qry .= " (SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
|
||||
@@ -1274,7 +1274,7 @@ function StudentAuswahl()
|
||||
{
|
||||
// *** Zeugnis ***
|
||||
zeugnistree = document.getElementById('student-zeugnis-tree');
|
||||
url='<?php echo APP_ROOT;?>rdf/akte.rdf.php?person_id='+person_id+"&dokument_kurzbz=Zeugnis&"+gettimestamp();
|
||||
url='<?php echo APP_ROOT;?>rdf/akte.rdf.php?person_id='+person_id+"&"+gettimestamp();
|
||||
|
||||
try
|
||||
{
|
||||
@@ -2933,7 +2933,9 @@ function StudentAkteDel()
|
||||
// ****
|
||||
function StudentAkteDisableFields(val)
|
||||
{
|
||||
document.getElementById('student-zeugnis-button-archivieren').disabled=val;
|
||||
document.getElementById('student-zeugnis-button-archive').disabled=val;
|
||||
// Zeugnis als Default markieren
|
||||
document.getElementById('student-zeugnis-menulist-dokument').value='Zeugnis';
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -2962,14 +2964,8 @@ function StudentAkteUpload()
|
||||
window.open('../vilesci/personen/akteupdate.php?akte_id='+akte_id);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Startet das Script zum Archivieren des Zeugnisses und
|
||||
// * Refresht dann den Tree
|
||||
// ****
|
||||
function StudentZeugnisArchivieren(lang)
|
||||
function StudentZeugnisDokumentArchivieren()
|
||||
{
|
||||
lang = lang || 'ger';
|
||||
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-tree');
|
||||
|
||||
@@ -2988,6 +2984,47 @@ function StudentZeugnisArchivieren(lang)
|
||||
var errormsg = '';
|
||||
var stsem = getStudiensemester();
|
||||
|
||||
var vorlage = document.getElementById('student-zeugnis-menulist-dokument').value;
|
||||
var url = '<?php echo APP_ROOT; ?>content/pdfExport.php';
|
||||
var xml = '';
|
||||
|
||||
switch(vorlage)
|
||||
{
|
||||
case 'Zeugnis':
|
||||
case 'ZeugnisEng':
|
||||
xml = 'zeugnis.rdf.php'
|
||||
break;
|
||||
|
||||
case 'PrProtokollBakk':
|
||||
case 'PrProtBakkEng':
|
||||
case 'PrProtBA':
|
||||
case 'PrProtBAEng':
|
||||
case 'PrProtokollDipl':
|
||||
case 'PrProtDiplEng':
|
||||
case 'PrProtMA':
|
||||
case 'PrProtMAEng':
|
||||
case 'Bescheid':
|
||||
case 'BescheidEng':
|
||||
xml = 'abschlusspruefung.rdf.php';
|
||||
break;
|
||||
|
||||
case 'DiplSupplement':
|
||||
xml = 'diplomasupplement.xml.php';
|
||||
break;
|
||||
|
||||
case 'Studienblatt':
|
||||
case 'StudienblattEng':
|
||||
xml = 'studienblatt.xml.php';
|
||||
break;
|
||||
default:
|
||||
alert('Das archivieren fuer diesen Dokumenttyp wird derzeit nicht unterstuetzt');
|
||||
return
|
||||
break;
|
||||
}
|
||||
|
||||
var labelalt = document.getElementById('student-zeugnis-button-archive').label;
|
||||
document.getElementById('student-zeugnis-button-archive').label='Loading...';
|
||||
|
||||
//Zeugnis fuer alle markierten Studenten archivieren
|
||||
for (var t=0; t<numRanges; t++)
|
||||
{
|
||||
@@ -2996,14 +3033,12 @@ function StudentZeugnisArchivieren(lang)
|
||||
{
|
||||
uid = getTreeCellText(tree, 'student-treecol-uid', v);
|
||||
|
||||
var xsl_vorlage;
|
||||
if(lang=='eng')
|
||||
xsl_vorlage = 'ZeugnisEng';
|
||||
else
|
||||
xsl_vorlage = 'Zeugnis';
|
||||
url = '<?php echo APP_ROOT; ?>content/pdfExport.php?xsl='+xsl_vorlage+'&xml=zeugnis.rdf.php&uid='+uid+'&ss='+stsem+'&archive=1';
|
||||
|
||||
var req = new phpRequest(url,'','');
|
||||
req.add('xsl', vorlage);
|
||||
req.add('xml', xml);
|
||||
req.add('ss', stsem);
|
||||
req.add('archive', '1');
|
||||
req.add('uid', uid);
|
||||
|
||||
var response = req.execute();
|
||||
if(response!='')
|
||||
@@ -3013,61 +3048,7 @@ function StudentZeugnisArchivieren(lang)
|
||||
|
||||
if(errormsg!='')
|
||||
alert(errormsg);
|
||||
|
||||
StudentAkteTreeDatasource.Refresh(false);
|
||||
}
|
||||
|
||||
// * Startet das Script zum Archivieren des Bescheids und
|
||||
// * Refresht dann den Tree
|
||||
// ****
|
||||
function StudentBescheidArchivieren(lang)
|
||||
{
|
||||
lang = lang || 'ger';
|
||||
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('student-tree');
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
{
|
||||
alert('Student muss ausgewaehlt sein');
|
||||
return;
|
||||
}
|
||||
|
||||
var tree=document.getElementById('student-tree');
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var anzfault=0;
|
||||
var uid='';
|
||||
var errormsg = '';
|
||||
var stsem = getStudiensemester();
|
||||
|
||||
//Bescheid fuer alle markierten Studenten archivieren
|
||||
for (var t=0; t<numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (v=start.value; v<=end.value; v++)
|
||||
{
|
||||
uid = getTreeCellText(tree, 'student-treecol-uid', v);
|
||||
|
||||
var xsl_vorlage;
|
||||
if(lang=='eng')
|
||||
xsl_vorlage = 'BescheidEng';
|
||||
else
|
||||
xsl_vorlage = 'Bescheid';
|
||||
url = '<?php echo APP_ROOT; ?>content/pdfExport.php?xsl='+xsl_vorlage+'&xml=abschlusspruefung.rdf.php&uid='+uid+'&ss='+stsem+'&archive=1';
|
||||
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
var response = req.execute();
|
||||
if(response!='')
|
||||
errormsg = errormsg + response;
|
||||
}
|
||||
}
|
||||
|
||||
if(errormsg!='')
|
||||
alert(errormsg);
|
||||
|
||||
document.getElementById('student-zeugnis-button-archive').label=labelalt;
|
||||
StudentAkteTreeDatasource.Refresh(false);
|
||||
}
|
||||
|
||||
@@ -3618,36 +3599,6 @@ function StudentNotenTreeSelectDifferent()
|
||||
function StudentLvGesamtNotenTreeSelectID()
|
||||
{
|
||||
StudentNotenTreeSelectDifferent();
|
||||
|
||||
/*
|
||||
var tree=document.getElementById('student-lvgesamtnoten-tree');
|
||||
if(tree.view)
|
||||
var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
|
||||
else
|
||||
return false;
|
||||
|
||||
//In der globalen Variable ist die zu selektierende Eintrag gespeichert
|
||||
if(StudentLvGesamtNotenSelectLehrveranstaltungID!=null)
|
||||
{
|
||||
for(var i=0;i<items;i++)
|
||||
{
|
||||
//ID der row holen
|
||||
col = tree.columns ? tree.columns["student-lvgesamtnoten-tree-lehrveranstaltung_id"] : "student-lvgesamtnoten-tree-lehrveranstaltung_id";
|
||||
var lehrveranstaltung_id=tree.view.getCellText(i,col);
|
||||
|
||||
//wenn dies die zu selektierende Zeile
|
||||
if(lehrveranstaltung_id == StudentLvGesamtNotenSelectLehrveranstaltungID)
|
||||
{
|
||||
//Zeile markieren
|
||||
tree.view.selection.select(i);
|
||||
//Sicherstellen, dass die Zeile im sichtbaren Bereich liegt
|
||||
tree.treeBoxObject.ensureRowIsVisible(i);
|
||||
StudentNotenSelectLehrveranstaltungID=null;
|
||||
StudentNotenSelectStudentUID=null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
// ***
|
||||
@@ -4365,7 +4316,6 @@ function StudentPruefungAuswahl()
|
||||
|
||||
//Lehrveranstaltung Drop Down laden
|
||||
var LVDropDown = document.getElementById('student-pruefung-menulist-lehrveranstaltung');
|
||||
//url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&"+gettimestamp();
|
||||
var uid = document.getElementById('student-detail-textbox-uid').value;
|
||||
url="<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid="+uid+"&"+gettimestamp();
|
||||
|
||||
@@ -4483,9 +4433,9 @@ function StudentAnrechnungenTreeSelectID()
|
||||
//In der globalen Variable ist die zu selektierende Eintrag gespeichert
|
||||
if(StudentAnrechnungSelectID!=null)
|
||||
{
|
||||
for(var i=0;i<items;i++)
|
||||
{
|
||||
//ID der row holen
|
||||
for(var i=0;i<items;i++)
|
||||
{
|
||||
//ID der row holen
|
||||
col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id=tree.view.getCellText(i,col);
|
||||
|
||||
@@ -4499,7 +4449,7 @@ function StudentAnrechnungenTreeSelectID()
|
||||
StudentAnrechnungSelectID=null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4517,7 +4467,7 @@ function StudentNotizNeu()
|
||||
}
|
||||
|
||||
//Ausgewaehlte ID holen
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
window.open("<?php echo APP_ROOT; ?>content/notizdialog.xul.php?anrechnung_id="+anrechnung_id,"","chrome, status=no, width=500, height=500, centerscreen, resizable");
|
||||
@@ -4565,7 +4515,7 @@ function StudentAnrechnungNeu()
|
||||
|
||||
document.getElementById("student-anrechnungen-menulist-kompatible_lehrveranstaltung-row").hidden = true;
|
||||
StudentAnrechnungDetailDisableFields(false);
|
||||
StudentAnrechnungResetNotizLabel();
|
||||
StudentAnrechnungResetNotizLabel();
|
||||
|
||||
// Prestudent-ID in hidden field speichern
|
||||
var col = tree.columns ? tree.columns["student-treecol-prestudent_id"] : "student-treecol-prestudent_id";
|
||||
@@ -4751,7 +4701,7 @@ function StudentAnrechnungDelete()
|
||||
}
|
||||
|
||||
//Ausgewaehlte ID holen
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
// Studiengang ermitteln
|
||||
@@ -4793,7 +4743,7 @@ function StudentAnrechnungDelete()
|
||||
// ****
|
||||
function StudentAnrechnungResetNotizLabel()
|
||||
{
|
||||
document.getElementById('student-anrechnungen-button-notiz').label = "Notiz hinzufügen";
|
||||
document.getElementById('student-anrechnungen-button-notiz').label = "Notiz hinzufügen";
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -4809,7 +4759,7 @@ function StudentAnrechnungAuswahl()
|
||||
StudentAnrechnungDetailDisableFields(false);
|
||||
|
||||
//Ausgewaehlte ID holen
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var col = tree.columns ? tree.columns["student-anrechnungen-tree-anrechnung_id"] : "student-anrechnungen-tree-anrechnung_id";
|
||||
var anrechnung_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
// Prestudent-ID in hidden field speichern
|
||||
@@ -4821,7 +4771,7 @@ function StudentAnrechnungAuswahl()
|
||||
var url = '<?php echo APP_ROOT ?>rdf/anrechnung.rdf.php?anrechnung_id='+anrechnung_id+'&'+gettimestamp();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
var dsource = rdfService.GetDataSourceBlocking(url);
|
||||
var dsource = rdfService.GetDataSourceBlocking(url);
|
||||
var subject = rdfService.GetResource("http://www.technikum-wien.at/anrechnung/" + anrechnung_id);
|
||||
var predicateNS = "http://www.technikum-wien.at/anrechnung/rdf";
|
||||
|
||||
@@ -5198,46 +5148,6 @@ function StudentCreateDiplSupplement(event)
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=diplomasupplement.xml.php&output='+output+'&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+paramList,'DiplomaSupplement', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Archiviert das Diplomasupplement einer Person
|
||||
// ****
|
||||
function StudentDiplomasupplementArchivieren()
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
tree = document.getElementById('student-tree');
|
||||
|
||||
//Markierte Studenten holen
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
var paramList= '';
|
||||
var errormsg='';
|
||||
|
||||
var labelalt = document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label;
|
||||
document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label='Loading...';
|
||||
for (var t = 0; t < numRanges; t++)
|
||||
{
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (var v = start.value; v <= end.value; v++)
|
||||
{
|
||||
var col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
|
||||
var uid=tree.view.getCellText(v,col);
|
||||
stg_kz=getTreeCellText(tree,"student-treecol-studiengang_kz", v);
|
||||
|
||||
url = '<?php echo APP_ROOT; ?>content/pdfExport.php?xml=diplomasupplement.xml.php&output=pdf&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+uid+'&archive=true';
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
var response = req.execute();
|
||||
if(response!='')
|
||||
errormsg = errormsg + response;
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label=labelalt;
|
||||
StudentAkteTreeDatasource.Refresh(false);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Erstellt den Ausbildungsvertrag fuer einen oder mehrere Studenten
|
||||
// ****
|
||||
@@ -5284,7 +5194,7 @@ function StudentPrintAusbildungsvertrag(event)
|
||||
}
|
||||
|
||||
//PDF erzeugen
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&style_xsl=AusbildStatus&output='+output+'&prestudent_id='+paramList,'Ausbildungsvertrag', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&output='+output+'&prestudent_id='+paramList,'Ausbildungsvertrag', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
//****
|
||||
@@ -5333,7 +5243,7 @@ function StudentPrintAusbildungsvertragEnglisch(event)
|
||||
}
|
||||
|
||||
//PDF erzeugen
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&style_xsl=AusbVerEngHead&output='+output+'&prestudent_id='+paramList,'AusbildungsvertragEng', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
window.open('<?php echo APP_ROOT; ?>content/pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output='+output+'&prestudent_id='+paramList,'AusbildungsvertragEng', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -5558,7 +5468,7 @@ function StudentPrestudentRolleVorruecken()
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
{
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
//markierte Rolle holen
|
||||
|
||||
@@ -77,7 +77,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#erstelltam" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-zeugnis-tree-gedruckt" label="Gedruckt" flex="2" hidden="false"
|
||||
<treecol id="student-zeugnis-tree-gedruckt" label="Gedruckt" flex="2" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#gedruckt" />
|
||||
<splitter class="tree-splitter"/>
|
||||
@@ -85,6 +85,14 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#akte_id" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-zeugnis-tree-signiert" label="Signiert" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#signiert" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-zeugnis-tree-stud_selfservice" label="Selfservice" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/akte/rdf#stud_selfservice" />
|
||||
<splitter class="tree-splitter"/>
|
||||
</treecols>
|
||||
|
||||
<template>
|
||||
@@ -96,22 +104,48 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#erstelltam"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#gedruckt"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#akte_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#signiert"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/akte/rdf#stud_selfservice"/>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</template>
|
||||
</tree>
|
||||
</groupbox>
|
||||
<vbox id="student-zeugnis-buttons">
|
||||
<spacer flex="1"/>
|
||||
<button id="student-zeugnis-button-archivieren" label="aktuelles Zeugnis archivieren" disabled="false" oncommand="StudentZeugnisArchivieren()"/>
|
||||
<button id="student-zeugnis-button-archivieren-englisch" label="aktuelles Zeugnis archivieren (englisch)" disabled="false" oncommand="StudentZeugnisArchivieren('eng')"/>
|
||||
<button id="student-zeugnis-button-archivieren-diplomasupplement" label="Diplomasupplement archivieren" disabled="false" oncommand="StudentDiplomasupplementArchivieren()"/>
|
||||
<button id="student-bescheid-button-archivieren" label="Bescheid archivieren" disabled="false" oncommand="StudentBescheidArchivieren()"/>
|
||||
<button id="student-bescheid-button-archivieren-englisch" label="Bescheid archivieren (englisch)" disabled="false" oncommand="StudentBescheidArchivieren('eng')"/>
|
||||
<spacer flex="1"/>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<groupbox id="student-zeugnis-groupbox-archive">
|
||||
<caption label="Dokument archivieren" />
|
||||
<grid id="student-zeugnis-grid-archive" style="margin:4px;" flex="3">
|
||||
<columns >
|
||||
<column flex="1"/>
|
||||
<column flex="8"/>
|
||||
<column flex="2"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="Dokument" control="student-zeugnis-menulist-dokument"/>
|
||||
<menulist id="student-zeugnis-menulist-dokument"
|
||||
datasources="../rdf/vorlage.rdf.php" flex="1"
|
||||
ref="http://www.technikum-wien.at/vorlage"
|
||||
style="min-width:300px" >
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/vorlage/rdf#vorlage_kurzbz"
|
||||
label="rdf:http://www.technikum-wien.at/vorlage/rdf#bezeichnung"
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
<button id="student-zeugnis-button-archive" label="Archivieren" disabled="false" oncommand="StudentZeugnisDokumentArchivieren()"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</groupbox>
|
||||
<spacer flex="1" />
|
||||
</hbox>
|
||||
<vbox>
|
||||
</vbox>
|
||||
<spacer flex="8" />
|
||||
</vbox>
|
||||
</overlay>
|
||||
|
||||
+292
-358
@@ -1,358 +1,292 @@
|
||||
<?php
|
||||
/* Copyright (C) 2012 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
*/
|
||||
/* Erstellt ein Dokument zum Drucken der Zutrittskarten
|
||||
*
|
||||
* Parameter:
|
||||
* data ... Liste der UIDs mit Strichpunkt getrennt
|
||||
* type ... normal | datum - wenn datum übergeben wird, wird nur das Gueltigkeitsdatum erstellt,
|
||||
* sonst alle Kartendaten
|
||||
*
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/benutzer.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/datum.class.php');
|
||||
require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/konto.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
require_once('../include/studiengang.class.php');
|
||||
require_once('../include/benutzerfunktion.class.php');
|
||||
require_once('../include/organisationseinheit.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
|
||||
$datum_obj = new datum();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if(!$rechte->isBerechtigt('mitarbeiter/stammdaten') && !$rechte->isBerechtigt('student/stammdaten'))
|
||||
{
|
||||
die('Sie haben keine Berechtigung fuer diese Seite');
|
||||
}
|
||||
|
||||
//UIDs werden entweder als data Parameter mit ";" getrennt übergeben
|
||||
$uid = isset($_REQUEST['data'])?$_REQUEST['data']:'';
|
||||
//ODER als POST Array über den Parameter users
|
||||
$users = isset($_REQUEST['users'])?$_REQUEST['users']:'';
|
||||
$type = isset($_REQUEST['type'])?$_REQUEST['type']:'normal';
|
||||
$output = isset($_REQUEST['output'])?$_REQUEST['output']:'pdf';
|
||||
if($uid=='' && $users=='')
|
||||
die('Parameter data is missing');
|
||||
|
||||
$uid_arr = array();
|
||||
if($users!='')
|
||||
$uid_arr = $users;
|
||||
else
|
||||
$uid_arr = explode(';',$uid);
|
||||
|
||||
// Wenn Array mehrere Elemente hat und erstes Element im Array leer ist -> entfernen
|
||||
if (isset($uid_arr[1]) && $uid_arr[0] == '')
|
||||
array_shift($uid_arr);
|
||||
|
||||
// Tempordner fuer das erstellen des ODT anlegen
|
||||
$tempfolder = '/tmp/'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
|
||||
// Unterordner fuer die Bilder erstellen
|
||||
mkdir('Pictures');
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz=0;
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if(isset($_GET['xsl_stg_kz']))
|
||||
$xsl_stg_kz=$_GET['xsl_stg_kz'];
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if(isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz=$_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Vorlage des Studiengangs aus $uid_arr ermitteln (1. Studierender im Array)
|
||||
if($uid_arr[0] != '')
|
||||
{
|
||||
$student_obj = new student();
|
||||
if($student_obj->load($uid_arr[0]))
|
||||
{
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Vorlage der Zutrittskarte laden
|
||||
|
||||
if($xsl_stg_kz=='')
|
||||
$xsl_stg_kz='0';
|
||||
|
||||
$vorlage = new vorlage();
|
||||
if(!$vorlage->getAktuelleVorlage($xsl_stg_kz, 'Zutrittskarte'))
|
||||
die($vorlage->errormsg);
|
||||
$xsl_content = $vorlage->text;
|
||||
|
||||
// Vorlage ODT in den Temp Ordner kopieren
|
||||
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.odt';
|
||||
$tempname_zip = 'out.zip';
|
||||
if(copy($zipfile, $tempname_zip))
|
||||
{
|
||||
// XML mit den Personendaten erstellen
|
||||
$xml ="<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
|
||||
<zutrittskarte>";
|
||||
|
||||
foreach($uid_arr as $uid)
|
||||
{
|
||||
$bn = new benutzer();
|
||||
if($bn->load($uid))
|
||||
{
|
||||
$gueltigbis = '';
|
||||
|
||||
// Bild der Person holen
|
||||
$bild = $qry = "SELECT inhalt as foto FROM public.tbl_akte WHERE dokument_kurzbz='Lichtbil' AND person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
$cTmpHEX='/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
//Wenn kein Lichtbild in den Akten vorhanden ist, Foto aus tbl_person holen
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$cTmpHEX = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
//Wenn der Inhalt des Lichtbilds leer ist, Foto aus tbl_person holen
|
||||
if ($row->foto =='')
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$cTmpHEX = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$cTmpHEX = $row->foto;
|
||||
}
|
||||
}
|
||||
|
||||
// Bild in den Temp Ordner zwischenspeichern
|
||||
file_put_contents($tempfolder.'/Pictures/'.$bn->uid.'.jpg',base64_decode($cTmpHEX));
|
||||
|
||||
// Bild zum Manifest-File des ODTs hinzufuegen
|
||||
addImageToManifest($tempname_zip, 'Pictures/'.$bn->uid.'.jpg', $contenttype='image/jpeg');
|
||||
|
||||
if(check_lektor($uid))
|
||||
{
|
||||
$ma = new mitarbeiter();
|
||||
$ma->load($uid);
|
||||
$benutzerfunktion = new benutzerfunktion();
|
||||
$benutzerfunktion->getBenutzerFunktionByUid($uid, NULL, date("Y-m-d"), date("Y-m-d"));
|
||||
if(!empty($benutzerfunktion->result[0]))
|
||||
{
|
||||
$oe = new organisationseinheit($benutzerfunktion->result[0]->oe_kurzbz);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oe = new organisationseinheit();
|
||||
}
|
||||
$xml.="
|
||||
<mitarbeiter>
|
||||
<uid><![CDATA[".$bn->uid."]]></uid>
|
||||
<vorname><![CDATA[".$bn->vorname."]]></vorname>
|
||||
<nachname><![CDATA[".$bn->nachname."]]></nachname>
|
||||
<titelpre><![CDATA[".$bn->titelpre."]]></titelpre>
|
||||
<titelpost><![CDATA[".$bn->titelpost."]]></titelpost>
|
||||
<personalnummer><![CDATA[".$ma->personalnummer."]]></personalnummer>
|
||||
<ausstellungsdatum><![CDATA[".date('d.m.Y')."]]></ausstellungsdatum>
|
||||
<gebdatum><![CDATA[".$datum_obj->formatDatum($ma->gebdatum,'d.m.Y')."]]></gebdatum>
|
||||
<organisationseinheit><![CDATA[".$oe->bezeichnung."]]></organisationseinheit>
|
||||
</mitarbeiter>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$student = new student();
|
||||
$student->load($bn->uid);
|
||||
$konto = new konto();
|
||||
$studiengang = new studiengang();
|
||||
$studiengang->load($student->studiengang_kz);
|
||||
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
$stsem_obj->load($stsem);
|
||||
|
||||
if($konto->checkStudienbeitrag($bn->uid, $stsem_obj->studiensemester_kurzbz))
|
||||
{
|
||||
$gueltigbis=$stsem_obj->ende;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Studiengebuehr noch nicht bezahlt
|
||||
$gueltigbis=$stsem_obj->ende;
|
||||
}
|
||||
|
||||
if($type=='datum')
|
||||
{
|
||||
//Nur der Datumsstempel wird erstellt
|
||||
$xml.="
|
||||
<datum>
|
||||
<gueltigbis><![CDATA[".$datum_obj->formatDatum($gueltigbis,'d/m/Y')."]]></gueltigbis>
|
||||
</datum>";
|
||||
}
|
||||
else
|
||||
{
|
||||
//Student
|
||||
$xml.="
|
||||
<student>
|
||||
<uid><![CDATA[".$bn->uid."]]></uid>
|
||||
<vorname><![CDATA[".$bn->vorname."]]></vorname>
|
||||
<nachname><![CDATA[".$bn->nachname."]]></nachname>
|
||||
<titelpre><![CDATA[".$bn->titelpre."]]></titelpre>
|
||||
<titelpost><![CDATA[".$bn->titelpost."]]></titelpost>
|
||||
<studiengang><![CDATA[".$studiengang->kurzbzlang."]]></studiengang>
|
||||
<gebdatum><![CDATA[".$datum_obj->formatDatum($bn->gebdatum,'d.m.Y')."]]></gebdatum>
|
||||
<matrikelnummer><![CDATA[".$student->matrikelnr."]]></matrikelnummer>
|
||||
<ausstellungsdatum><![CDATA[".date('M.Y')."]]></ausstellungsdatum>
|
||||
<gueltigbis><![CDATA[".$datum_obj->formatDatum($gueltigbis,'d.m.Y')."]]></gueltigbis>
|
||||
</student>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$xml.="</zutrittskarte>";
|
||||
|
||||
// XSL-Vorlage von content.xml laden
|
||||
$xsl_doc = new DOMDocument;
|
||||
if(!$xsl_doc->loadXML($xsl_content))
|
||||
die('Fehler beim Laden der XSL Vorlage von content.xml.');
|
||||
|
||||
// XML Dokument in ein DOM Objekt laden
|
||||
$xml_doc = new DOMDocument;
|
||||
if(!$xml_doc->loadXML($xml))
|
||||
die('Fehler beim Laden des XML');
|
||||
|
||||
// XSL File in den Processor laden
|
||||
$proc = new XSLTProcessor;
|
||||
$proc->importStyleSheet($xsl_doc);
|
||||
|
||||
// XSL-Transformation starten
|
||||
$buffer = $proc->transformToXml($xml_doc);
|
||||
|
||||
// Konvertierte content.xml ins Filesystem schreiben
|
||||
file_put_contents('content.xml', $buffer);
|
||||
|
||||
//Debugging XML
|
||||
//file_put_contents('Pictures/out.xml', $xml);
|
||||
|
||||
// Bilder zum ZIP-File hinzufuegen
|
||||
exec("zip $tempname_zip Pictures/*");
|
||||
|
||||
// content.xml ins ZIP-File hinzufuegen
|
||||
exec("zip $tempname_zip content.xml");
|
||||
|
||||
if($output=='pdf')
|
||||
{
|
||||
exec("unoconv --stdout -f pdf $tempname_zip > out.pdf");
|
||||
$tempname_zip='out.pdf';
|
||||
}
|
||||
|
||||
//Ausgeben des Dokuments
|
||||
clearstatcache();
|
||||
$fsize = filesize($tempname_zip);
|
||||
$handle = fopen($tempname_zip,'r');
|
||||
if($output=='pdf')
|
||||
{
|
||||
header('Content-type: application/pdf');
|
||||
header('Content-Disposition: attachment; filename="'.$vorlage->vorlage_kurzbz.'.pdf"');
|
||||
}
|
||||
else
|
||||
{
|
||||
header('Content-type: '.$vorlage->mimetype);
|
||||
header('Content-Disposition: attachment; filename="'.$vorlage->vorlage_kurzbz.'.odt"');
|
||||
}
|
||||
header('Content-Length: '.$fsize);
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
//Loeschen der Temporaeren Dateien
|
||||
//unlink('content.xml');
|
||||
//Unlinking Pictures ?
|
||||
//unlink($tempname_zip);
|
||||
//rmdir($tempfolder);
|
||||
exec('rm -r '.$tempfolder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fuegt ein Bild zur Manifest-Datei eines ODT Files hinzu
|
||||
*
|
||||
* @param $zip Zip Pfad
|
||||
* @param $image Bild Pfad
|
||||
* @param $contenttype Content-Type des Bildes
|
||||
*/
|
||||
function addImageToManifest($zip, $image, $contenttype='image/png')
|
||||
{
|
||||
// Manifest Datei holen
|
||||
exec('unzip '.$zip.' META-INF/manifest.xml');
|
||||
// Bild zur Manifest Datei hinzufuegen
|
||||
$manifest = file_get_contents('META-INF/manifest.xml');
|
||||
$xml_doc = new DOMDocument;
|
||||
if(!$xml_doc->loadXML($manifest))
|
||||
die('Manifest File ungueltig');
|
||||
//root-node holen
|
||||
$root = $xml_doc->getElementsByTagName('manifest')->item(0);
|
||||
|
||||
//Neues Element unterhalb des Root Nodes anlegen
|
||||
$node = $xml_doc->createElement("manifest:file-entry");
|
||||
$node->setAttribute("manifest:media-type",$contenttype);
|
||||
$node->setAttribute("manifest:full-path",$image);
|
||||
$root->appendChild($node);
|
||||
$out = $xml_doc->saveXML();
|
||||
|
||||
//geaenderte Manifest Datei speichern und wieder ins Zip packen
|
||||
file_put_contents('META-INF/manifest.xml', $out);
|
||||
exec('zip '.$zip.' META-INF/*');
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/* Copyright (C) 2012 FH Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
*/
|
||||
/* Erstellt ein Dokument zum Drucken der Zutrittskarten
|
||||
*
|
||||
* Parameter:
|
||||
* data ... Liste der UIDs mit Strichpunkt getrennt
|
||||
* type ... normal | datum - wenn datum übergeben wird, wird nur das Gueltigkeitsdatum erstellt,
|
||||
* sonst alle Kartendaten
|
||||
*
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/akte.class.php');
|
||||
require_once('../include/benutzer.class.php');
|
||||
require_once('../include/vorlage.class.php');
|
||||
require_once('../include/datum.class.php');
|
||||
require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/konto.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
require_once('../include/studiengang.class.php');
|
||||
require_once('../include/benutzerfunktion.class.php');
|
||||
require_once('../include/organisationseinheit.class.php');
|
||||
require_once('../include/dokument_export.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
|
||||
$datum_obj = new datum();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if (!$rechte->isBerechtigt('mitarbeiter/stammdaten') && !$rechte->isBerechtigt('student/stammdaten'))
|
||||
{
|
||||
die('Sie haben keine Berechtigung fuer diese Seite');
|
||||
}
|
||||
|
||||
//UIDs werden entweder als data Parameter mit ";" getrennt übergeben
|
||||
$uid = isset($_REQUEST['data'])?$_REQUEST['data']:'';
|
||||
//ODER als POST Array über den Parameter users
|
||||
$users = isset($_REQUEST['users'])?$_REQUEST['users']:'';
|
||||
$type = isset($_REQUEST['type'])?$_REQUEST['type']:'normal';
|
||||
$output = isset($_REQUEST['output'])?$_REQUEST['output']:'pdf';
|
||||
if ($uid == '' && $users == '')
|
||||
die('Parameter data is missing');
|
||||
|
||||
$images = array();
|
||||
$uid_arr = array();
|
||||
if ($users != '')
|
||||
$uid_arr = $users;
|
||||
else
|
||||
$uid_arr = explode(';', $uid);
|
||||
|
||||
// Wenn Array mehrere Elemente hat und erstes Element im Array leer ist -> entfernen
|
||||
if (isset($uid_arr[1]) && $uid_arr[0] == '')
|
||||
array_shift($uid_arr);
|
||||
|
||||
// Tempordner fuer das erstellen des ODT anlegen
|
||||
$tempfolder = '/tmp/fhc-'.uniqid();
|
||||
mkdir($tempfolder);
|
||||
chdir($tempfolder);
|
||||
|
||||
// Unterordner fuer die Bilder erstellen
|
||||
mkdir('Pictures');
|
||||
|
||||
// Studiengang ermitteln dessen Vorlage verwendet werden soll
|
||||
$xsl_stg_kz = 0;
|
||||
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
|
||||
if (isset($_GET['xsl_stg_kz']))
|
||||
{
|
||||
$xsl_stg_kz = $_GET['xsl_stg_kz'];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet
|
||||
if (isset($_GET['stg_kz']))
|
||||
$xsl_stg_kz = $_GET['stg_kz'];
|
||||
else
|
||||
{
|
||||
// Vorlage des Studiengangs aus $uid_arr ermitteln (1. Studierender im Array)
|
||||
if ($uid_arr[0] != '')
|
||||
{
|
||||
$student_obj = new student();
|
||||
if ($student_obj->load($uid_arr[0]))
|
||||
{
|
||||
$xsl_stg_kz = $student_obj->studiengang_kz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Vorlage der Zutrittskarte laden
|
||||
|
||||
if ($xsl_stg_kz == '')
|
||||
$xsl_stg_kz = '0';
|
||||
|
||||
$xsl_oe_kurzbz = '';
|
||||
$stg = new studiengang();
|
||||
if ($stg->load($xsl_stg_kz))
|
||||
{
|
||||
$xsl_oe_kurzbz = $stg->oe_kurzbz;
|
||||
}
|
||||
else
|
||||
die('Unknown Studiengang');
|
||||
|
||||
$dokument = new dokument_export('Zutrittskarte', $xsl_oe_kurzbz);
|
||||
$filename = 'Zutrittskarte';
|
||||
|
||||
foreach ($uid_arr as $uid)
|
||||
{
|
||||
$bn = new benutzer();
|
||||
if ($bn->load($uid))
|
||||
{
|
||||
$gueltigbis = '';
|
||||
|
||||
// Bild der Person holen
|
||||
$qry = "SELECT
|
||||
inhalt as foto
|
||||
FROM
|
||||
public.tbl_akte
|
||||
WHERE
|
||||
dokument_kurzbz = 'Lichtbil'
|
||||
AND person_id = ".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
$b64bild = '/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/';
|
||||
$b64bild .= '9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/';
|
||||
$b64bild .= '9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/';
|
||||
$b64bild .= '8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/';
|
||||
$b64bild .= 'EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';
|
||||
|
||||
if ($result = $db->db_query($qry))
|
||||
{
|
||||
//Wenn kein Lichtbild in den Akten vorhanden ist, Foto aus tbl_person holen
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person
|
||||
WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if ($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if ($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if ($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$b64bild = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
//Wenn der Inhalt des Lichtbilds leer ist, Foto aus tbl_person holen
|
||||
if ($row->foto == '')
|
||||
{
|
||||
$qry_person = "SELECT foto FROM public.tbl_person
|
||||
WHERE person_id=".$db->db_add_param($bn->person_id, FHC_INTEGER);
|
||||
|
||||
if ($result_person = $db->db_query($qry_person))
|
||||
{
|
||||
if ($row_person = $db->db_fetch_object($result_person))
|
||||
{
|
||||
//Wenn auch kein Foto in tbl_person gespeichert ist, mit der naechsten UID fortfahren
|
||||
if ($row_person->foto == '')
|
||||
continue;
|
||||
else
|
||||
$b64bild = $row_person->foto;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$b64bild = $row->foto;
|
||||
}
|
||||
}
|
||||
|
||||
$imagefilename = $tempfolder.'/Pictures/'.$bn->uid.'.jpg';
|
||||
// Bild in den Temp Ordner zwischenspeichern
|
||||
file_put_contents($imagefilename, base64_decode($b64bild));
|
||||
|
||||
$images[] = $imagefilename;
|
||||
// Bild zum Manifest-File des ODTs hinzufuegen
|
||||
$dokument->addImage($imagefilename, $bn->uid.'.jpg', 'image/jpg');
|
||||
|
||||
if (check_lektor($uid))
|
||||
{
|
||||
$ma = new mitarbeiter();
|
||||
$ma->load($uid);
|
||||
$benutzerfunktion = new benutzerfunktion();
|
||||
$benutzerfunktion->getBenutzerFunktionByUid($uid, null, date("Y-m-d"), date("Y-m-d"));
|
||||
if (!empty($benutzerfunktion->result[0]))
|
||||
{
|
||||
$oe = new organisationseinheit($benutzerfunktion->result[0]->oe_kurzbz);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oe = new organisationseinheit();
|
||||
}
|
||||
$data[]['mitarbeiter'] = array(
|
||||
'uid' => $bn->uid,
|
||||
'vorname' => $bn->vorname,
|
||||
'nachname' => $bn->nachname,
|
||||
'titelpre' => $bn->titelpre,
|
||||
'titepost' => $bn->titelpost,
|
||||
'personalnummer' => $ma->personalnummer,
|
||||
'ausstellungsdatum' => date('d.m.Y'),
|
||||
'gebdatum' => $datum_obj->formatDatum($ma->gebdatum, 'd.m.Y'),
|
||||
'organisationseinheit' => $oe->bezeichnung
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$student = new student();
|
||||
$student->load($bn->uid);
|
||||
$konto = new konto();
|
||||
$studiengang = new studiengang();
|
||||
$studiengang->load($student->studiengang_kz);
|
||||
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem = $stsem_obj->getaktorNext();
|
||||
$stsem_obj->load($stsem);
|
||||
|
||||
if ($konto->checkStudienbeitrag($bn->uid, $stsem_obj->studiensemester_kurzbz))
|
||||
{
|
||||
$gueltigbis = $stsem_obj->ende;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Studiengebuehr noch nicht bezahlt
|
||||
$gueltigbis = $stsem_obj->ende;
|
||||
}
|
||||
|
||||
if ($type == 'datum')
|
||||
{
|
||||
//Nur der Datumsstempel wird erstellt
|
||||
$data[]['datum'] = array(
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd/m/Y')
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[]['student'] = array(
|
||||
'uid' => $bn->uid,
|
||||
'vorname' => $bn->vorname,
|
||||
'nachname' => $bn->nachname,
|
||||
'titelpre' => $bn->titelpre,
|
||||
'titepost' => $bn->titelpost,
|
||||
'studiengang' => $studiengang->kurzbzlang,
|
||||
'gebdatum' => $datum_obj->formatDatum($bn->gebdatum, 'd.m.Y'),
|
||||
'matrikelnummer' => $student->matrikelnr,
|
||||
'ausstellungsdatum' => date('M.Y'),
|
||||
'gueltigbis' => $datum_obj->formatDatum($gueltigbis, 'd.m.Y')
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$dokument->addDataArray($data, 'zutrittskarte');
|
||||
$dokument->setFilename($filename);
|
||||
|
||||
if (!$dokument->create($output))
|
||||
die($dokument->errormsg);
|
||||
|
||||
$dokument->output();
|
||||
$dokument->close();
|
||||
|
||||
// Cleanup Temp Images
|
||||
foreach($images as $image)
|
||||
{
|
||||
if(file_exists($image))
|
||||
unlink($image);
|
||||
}
|
||||
rmdir($tempfolder.'/Pictures');
|
||||
rmdir($tempfolder);
|
||||
|
||||
+105
-7
@@ -51,6 +51,9 @@ class akte extends basis_db
|
||||
public $nachgereicht_am;
|
||||
public $ausstellungsnation;
|
||||
public $formal_geprueft_amum;
|
||||
public $archiv = false;
|
||||
public $signiert = false;
|
||||
public $stud_selfservice = false;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
@@ -106,6 +109,10 @@ class akte extends basis_db
|
||||
$this->nachgereicht_am = $row->nachgereicht_am;
|
||||
$this->ausstellungsnation = $row->ausstellungsnation;
|
||||
$this->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$this->archiv = $this->db_parse_bool($row->archiv);
|
||||
$this->signiert = $this->db_parse_bool($row->signiert);
|
||||
$this->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -189,7 +196,8 @@ class akte extends basis_db
|
||||
//Neuen Datensatz anlegen
|
||||
$qry = "BEGIN;INSERT INTO public.tbl_akte (person_id, dokument_kurzbz, inhalt, mimetype, erstelltam, gedruckt, titel,
|
||||
bezeichnung, updateamum, updatevon, insertamum, insertvon, uid, dms_id, nachgereicht, anmerkung,
|
||||
titel_intern, anmerkung_intern, nachgereicht_am, ausstellungsnation, formal_geprueft_amum) VALUES (".
|
||||
titel_intern, anmerkung_intern, nachgereicht_am, ausstellungsnation, formal_geprueft_amum,
|
||||
archiv, signiert, stud_selfservice) VALUES (".
|
||||
$this->db_add_param($this->person_id, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->dokument_kurzbz).', '.
|
||||
$this->db_add_param($this->inhalt).', '.
|
||||
@@ -210,7 +218,10 @@ class akte extends basis_db
|
||||
$this->db_add_param($this->anmerkung_intern).','.
|
||||
$this->db_add_param($this->nachgereicht_am).','.
|
||||
$this->db_add_param($this->ausstellungsnation).','.
|
||||
$this->db_add_param($this->formal_geprueft_amum).');';
|
||||
$this->db_add_param($this->formal_geprueft_amum).','.
|
||||
$this->db_add_param($this->archiv, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->signiert, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -234,7 +245,10 @@ class akte extends basis_db
|
||||
" anmerkung_intern=".$this->db_add_param($this->anmerkung_intern).",".
|
||||
" nachgereicht_am=".$this->db_add_param($this->nachgereicht_am).",".
|
||||
" ausstellungsnation=".$this->db_add_param($this->ausstellungsnation).",".
|
||||
" formal_geprueft_amum=".$this->db_add_param($this->formal_geprueft_amum).
|
||||
" formal_geprueft_amum=".$this->db_add_param($this->formal_geprueft_amum).",".
|
||||
" archiv=".$this->db_add_param($this->archiv, FHC_BOOLEAN).",".
|
||||
" signiert=".$this->db_add_param($this->signiert, FHC_BOOLEAN).",".
|
||||
" stud_selfservice=".$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).
|
||||
" WHERE akte_id=".$this->db_add_param($this->akte_id, FHC_INTEGER);
|
||||
}
|
||||
|
||||
@@ -285,13 +299,13 @@ class akte extends basis_db
|
||||
* nicht mehr angezeigt werden
|
||||
* @return true wenn ok, sonst false
|
||||
*/
|
||||
public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id= null)
|
||||
public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id = null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht,
|
||||
CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden,
|
||||
nachgereicht_am, ausstellungsnation, formal_geprueft_amum
|
||||
nachgereicht_am, ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
|
||||
if($dokument_kurzbz!=null)
|
||||
$qry.=" AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz);
|
||||
@@ -334,6 +348,9 @@ class akte extends basis_db
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
@@ -359,7 +376,7 @@ class akte extends basis_db
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid,
|
||||
dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am,
|
||||
ausstellungsnation, formal_geprueft_amum
|
||||
ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
|
||||
|
||||
$qry.=" AND dokument_kurzbz IN ('Lebenslf','Motivat','LearnAgr')";
|
||||
@@ -393,6 +410,9 @@ class akte extends basis_db
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
@@ -417,7 +437,7 @@ class akte extends basis_db
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid,
|
||||
dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am,
|
||||
ausstellungsnation, formal_geprueft_amum
|
||||
ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM public.tbl_akte WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)."
|
||||
ORDER BY erstelltam";
|
||||
|
||||
@@ -449,6 +469,84 @@ class akte extends basis_db
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die Archivdokumente einer Person
|
||||
*
|
||||
* @param $person_id ID der Person.
|
||||
* @param $signiert Boolean Wenn true werden nur Dokumente geliefert die digital signiert wurden.
|
||||
* @param $stud_selfservice Boolean Wenn true werden nur Dokumente geliefert die Studierende selbst herunterladen duerfen.
|
||||
* @return true wenn ok, sonst false
|
||||
*/
|
||||
public function getArchiv($person_id, $signiert = null, $stud_selfservice = null)
|
||||
{
|
||||
$qry = "
|
||||
SELECT
|
||||
akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern,
|
||||
titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht,
|
||||
CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden,
|
||||
nachgereicht_am, ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice
|
||||
FROM
|
||||
public.tbl_akte
|
||||
WHERE
|
||||
person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
|
||||
AND archiv = true";
|
||||
|
||||
if(!is_null($signiert))
|
||||
$qry.=" AND signiert=".($signiert?'true':'false');
|
||||
if(!is_null($stud_selfservice))
|
||||
$qry.=" AND stud_selfservice=".($stud_selfservice?'true':'false');
|
||||
|
||||
$qry.=" ORDER BY erstelltam";
|
||||
|
||||
$this->errormsg = $qry;
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$akten = new akte();
|
||||
|
||||
$akten->akte_id = $row->akte_id;
|
||||
$akten->person_id = $row->person_id;
|
||||
$akten->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
//$akte->inhalt = $row->inhalt;
|
||||
$akten->inhalt_vorhanden = $this->db_parse_bool($row->inhalt_vorhanden);
|
||||
$akten->mimetype = $row->mimetype;
|
||||
$akten->erstelltam = $row->erstelltam;
|
||||
$akten->gedruckt = $this->db_parse_bool($row->gedruckt);
|
||||
$akten->titel = $row->titel;
|
||||
$akten->bezeichnung = $row->bezeichnung;
|
||||
$akten->updateamum = $row->updateamum;
|
||||
$akten->updatevon = $row->updatevon;
|
||||
$akten->insertamum = $row->insertamum;
|
||||
$akten->insertvon = $row->insertvon;
|
||||
$akten->uid = $row->uid;
|
||||
$akten->dms_id = $row->dms_id;
|
||||
$akten->nachgereicht = $this->db_parse_bool($row->nachgereicht);
|
||||
$akten->anmerkung = $row->anmerkung;
|
||||
$akten->titel_intern = $row->titel_intern;
|
||||
$akten->anmerkung_intern = $row->anmerkung_intern;
|
||||
$akten->nachgereicht_am = $row->nachgereicht_am;
|
||||
$akten->ausstellungsnation = $row->ausstellungsnation;
|
||||
$akten->formal_geprueft_amum = $row->formal_geprueft_amum;
|
||||
$akten->archiv = $this->db_parse_bool($row->archiv);
|
||||
$akten->signiert = $this->db_parse_bool($row->signiert);
|
||||
$akten->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
|
||||
$this->result[] = $akten;
|
||||
}
|
||||
|
||||
+579
-579
File diff suppressed because it is too large
Load Diff
@@ -650,7 +650,7 @@ class benutzerberechtigung extends basis_db
|
||||
|
||||
foreach ($this->berechtigungen as $b)
|
||||
{
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz))
|
||||
&& (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null)))
|
||||
{
|
||||
if($b->negativ)
|
||||
@@ -671,7 +671,9 @@ class benutzerberechtigung extends basis_db
|
||||
{
|
||||
$childoes = $oe->getChilds($b->oe_kurzbz);
|
||||
foreach($childoes as $row)
|
||||
{
|
||||
$in .= "'".$this->db_escape($row)."',";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -728,7 +730,7 @@ class benutzerberechtigung extends basis_db
|
||||
|
||||
foreach ($this->berechtigungen as $b)
|
||||
{
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz))
|
||||
&& (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null)))
|
||||
{
|
||||
if($b->negativ)
|
||||
@@ -801,7 +803,7 @@ class benutzerberechtigung extends basis_db
|
||||
$oe = new organisationseinheit();
|
||||
foreach ($this->berechtigungen as $b)
|
||||
{
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz))
|
||||
&& (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null)))
|
||||
{
|
||||
if($b->negativ)
|
||||
@@ -828,9 +830,9 @@ class benutzerberechtigung extends basis_db
|
||||
{
|
||||
if(!is_null($b->oe_kurzbz))
|
||||
{
|
||||
$childoes = $oe->getChilds($b->oe_kurzbz);
|
||||
foreach($childoes as $row)
|
||||
$oe_kurzbz[] = $row;
|
||||
$childoes = $oe->getChilds($b->oe_kurzbz);
|
||||
foreach($childoes as $row)
|
||||
$oe_kurzbz[] = $row;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -874,7 +876,7 @@ class benutzerberechtigung extends basis_db
|
||||
if(!mb_strstr($b->berechtigung_kurzbz,'wawi/'))
|
||||
continue;
|
||||
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz))
|
||||
&& (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null)))
|
||||
{
|
||||
if($b->negativ)
|
||||
@@ -1065,7 +1067,7 @@ class benutzerberechtigung extends basis_db
|
||||
*
|
||||
* @param string $berechtigung_kurzbz Kurzbezeichnung der Berechtigung, deren Rollen geladen werden sollen
|
||||
* @param boolean $inklusiveRollen Default TRUE. Wenn true, wird ein UNION SELECT mit der tbl_rolleberechtigung ausgefuehrt
|
||||
* @param string $oe_kurzbz Organisationseinheit
|
||||
* @param string $oe_kurzbz Organisationseinheit
|
||||
* @return boolean true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getBenutzerFromBerechtigung($berechtigung_kurzbz, $inklusiveRollen = true, $oe_kurzbz = null)
|
||||
|
||||
+1458
-1445
File diff suppressed because it is too large
Load Diff
+400
-400
@@ -1,400 +1,400 @@
|
||||
<?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>.
|
||||
*/
|
||||
|
||||
class datum
|
||||
{
|
||||
public $ts_day=86400; // Timestamp eines Tages
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem String im
|
||||
* Format "31.12.2007 14:30"
|
||||
*/
|
||||
public function mktime_datumundzeit($datumundzeit)
|
||||
{
|
||||
if(mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4}) ([0-9]{2}):([0-9]{2})",$datumundzeit, $regs))
|
||||
return mktime($regs[4],$regs[5],0,$regs[2],$regs[1],$regs[3]);
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem String im
|
||||
* Format "31.12.2007"
|
||||
*/
|
||||
public function mktime_datum($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})",$datum, $regs))
|
||||
{
|
||||
return mktime(0,0,0,$regs[2],$regs[1],$regs[3]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem Datum im
|
||||
* ISO-Format "2007-01-31"
|
||||
*/
|
||||
public function mktime_fromdate($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$datum, $regs))
|
||||
{
|
||||
return mktime(0,0,0,$regs[2],$regs[3],$regs[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem String im
|
||||
* Format "2007-01-31 14:30:12"
|
||||
*/
|
||||
public function mktime_fromtimestamp($timestamp)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})",$timestamp, $regs))
|
||||
{
|
||||
return mktime($regs[4],$regs[5],$regs[6],$regs[2],$regs[3],$regs[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Springt von einen UNIX Timestamp ($datum) $wochen nach vor bzw. hinten
|
||||
*/
|
||||
public function jump_week($datum, $wochen)
|
||||
{
|
||||
$days = $wochen * 7;
|
||||
|
||||
$datetime=new DateTime();
|
||||
$datetime->setTimestamp($datum);
|
||||
$datetime->modify($days.' day');
|
||||
return $datetime->format("U");
|
||||
}
|
||||
|
||||
/**
|
||||
* Springt von einen UNIX Timestamp ($datum) $days nach vor bzw. hinten
|
||||
*/
|
||||
public function jump_day($datum, $days)
|
||||
{
|
||||
$stunde_vor=date("G",$datum);
|
||||
// Ein Tag sind 86400 Sekunden
|
||||
$datum+=86400*$days;
|
||||
$stunde_nach=date("G",$datum);
|
||||
if ($stunde_nach!=$stunde_vor)
|
||||
$datum+=3600;
|
||||
return $datum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Konvertiert das ISO Datumsformat (YYYY-MM-DD)
|
||||
* nach (DD.MM.YYYY)
|
||||
*/
|
||||
public function convertISODate($datum)
|
||||
{
|
||||
return (mb_strlen($datum)>0?date('d.m.Y',strtotime($datum)):'');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft Uhrzeit auf Gueltigkeit (HH:MM:SS)
|
||||
* @return true wenn ok, false wenn falsches Format
|
||||
*/
|
||||
public function checkUhrzeit($uhrzeit)
|
||||
{
|
||||
if(mb_ereg("([0-9]{2}):([0-9]{2})(:([0-9]{2}))?$",$uhrzeit))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob das Datum im Format dd.mm.YYYY oder YYYY-mm-dd ist
|
||||
* @return true wenn ok, false wenn falsches Format
|
||||
*/
|
||||
public function checkDatum($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})$",$datum) || mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})$",$datum))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zieht ein Datum von einem anderen ab, und gibt die differenz in Tagen zurueck (mit Vorzeichen)
|
||||
* @param $datum1
|
||||
* @param $datum2
|
||||
*/
|
||||
public function DateDiff($datum1, $datum2)
|
||||
{
|
||||
$datetime1 = new DateTime($datum1);
|
||||
$datetime2 = new DateTime($datum2);
|
||||
$interval = $datetime1->diff($datetime2);
|
||||
return $interval->format('%R%a');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob ein Datum / Datum und Uhrzeit zwischen 2 anderen liegt
|
||||
* Unterstuetzt auch offenes (leeres) Start und Ende Datum
|
||||
*
|
||||
* @param $start Startdatum
|
||||
* @param $ende Endedatum
|
||||
* @param $datum Datum das geprueft wird
|
||||
* @return true wenn dazwischen sonst false
|
||||
*/
|
||||
public function between($start, $ende, $datum)
|
||||
{
|
||||
$datestart = new DateTime($start);
|
||||
$dateende = new DateTime($ende);
|
||||
$dateref = new DateTime($datum);
|
||||
|
||||
// Start und Ende nicht gesetzt
|
||||
if($start=='' && $ende=='')
|
||||
return true;
|
||||
|
||||
// Start nicht gesetzt; Ende gesetzt
|
||||
if($start=='' && $ende!='' && $dateende>=$dateref)
|
||||
return true;
|
||||
|
||||
// Ende nicht gesetzt; Start gesetzt
|
||||
if($ende=='' && $start!='' && $datestart<=$dateref)
|
||||
return true;
|
||||
|
||||
// Start und Ende gesetzt
|
||||
if($ende!='' && $start!='' && $datestart<=$dateref && $dateende>=$dateref)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Summiert 2 Zeiten Stunde:Minute
|
||||
* Es liefert keine Uhrzeit zurueck sondern Stunden und Minuten
|
||||
* zB 12:10 + 23:15 = 35:25
|
||||
*
|
||||
* @param $zeit1
|
||||
* @param $zeit2
|
||||
* @return summe der beiden zeiten im Format Stunden:Minuten
|
||||
*/
|
||||
public function sumZeit($zeit1, $zeit2)
|
||||
{
|
||||
list($h1, $m1) = explode(':', $zeit1);
|
||||
list($h2, $m2) = explode(':', $zeit2);
|
||||
|
||||
$m1 +=$m2;
|
||||
|
||||
if($m1>=60)
|
||||
{
|
||||
$uebertrag = (int)($m1/60);
|
||||
$h1+= $uebertrag;
|
||||
}
|
||||
$m1=$m1%60;
|
||||
$h1+=$h2;
|
||||
if($m1<10)
|
||||
$m1='0'.$m1;
|
||||
if($h1<10)
|
||||
$h1='0'.$h1;
|
||||
|
||||
return $h1.':'.$m1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtrahiert 2 Zeiten ($zeit1-$zeit2) Stunde:Minute
|
||||
* Es liefert keine Uhrzeit zurueck sondern Stunden und Minuten
|
||||
* zB 23:15 - 12:10 = 11:05
|
||||
*
|
||||
* @param $zeit1
|
||||
* @param $zeit2
|
||||
* @return subtraktion der beiden zeiten im Format Stunden:Minuten, null wenn zeit 1 kleiner als zeit2 ist
|
||||
*/
|
||||
public function subZeit($zeit1, $zeit2)
|
||||
{
|
||||
list($h1, $m1) = explode(':', $zeit1);
|
||||
list($h2, $m2) = explode(':', $zeit2);
|
||||
|
||||
if($h1<$h2)
|
||||
return null;
|
||||
else if($h1 == $h2 && $m1<$m2)
|
||||
return null;
|
||||
|
||||
$m1 -=$m2;
|
||||
//echo $h1.','.$m1.','.$h2.','.$m2;
|
||||
if($m1<0)
|
||||
{
|
||||
$m1 = $m1 + 60;
|
||||
$h1 = (int)$h1-1;
|
||||
}
|
||||
$m1=$m1%60;
|
||||
$h1-=$h2;
|
||||
if($m1<10)
|
||||
$m1='0'.$m1;
|
||||
if($h1<10)
|
||||
$h1='0'.$h1;
|
||||
|
||||
return $h1.':'.$m1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft und Liefert ein Datum im angegeben Format
|
||||
* fuer die Formatierung wird die Funktion formatDatum verwendet
|
||||
* @param $datum
|
||||
* @param $format
|
||||
* @param $strict wenn das Datum aus einem Suchfeld komment, dann strict auf TRUE setzen da sonst
|
||||
* Eintraege wie zB 'last Monday' oder 'a' auch in ein Datum umgewandelt werden.
|
||||
* @return Formatierten Timestamp wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function checkformatDatum($datum, $format='Y-m-d H:i:s', $strict=false)
|
||||
{
|
||||
|
||||
@list($day, $month, $year) = @explode(".", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
@list($day, $month, $year) = @explode("-", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
@list($year, $month, $day) = @explode(".", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
@list($year, $month, $day) = @explode("-", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
|
||||
if (strlen($datum)==6)
|
||||
{
|
||||
$year="20".substr($datum,0,2);
|
||||
$month=substr($datum,2,2);
|
||||
$day=substr($datum,4,2);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
}
|
||||
else if (strlen($datum)==8)
|
||||
{
|
||||
$year=substr($datum,0,4);
|
||||
$month=substr($datum,4,2);
|
||||
$day=substr($datum, 6,2);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
|
||||
$year=substr($datum,5,4);
|
||||
$month=substr($datum,3,2);
|
||||
$day=substr($datum, 0,2);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert ein Datum im angegeben Format
|
||||
* ToDo: Liefert aktuellen Timestamp wenn Sonderzeichen uebergeben werden
|
||||
* zB '---'
|
||||
* @param $datum
|
||||
* @param $format
|
||||
* @param $strict wenn das Datum aus einem Suchfeld kommt, dann strict auf TRUE setzen da sonst
|
||||
* Eintraege wie zB 'last Monday' oder 'a' auch in ein Datum umgewandelt werden.
|
||||
* @return Formatierten Timestamp wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function formatDatum($datum, $format='Y-m-d H:i:s', $strict=false)
|
||||
{
|
||||
if(trim($datum)=='')
|
||||
return '';
|
||||
|
||||
$ts='';
|
||||
$error=false;
|
||||
|
||||
//2008-12-31
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime(0,0,0,$regs[2],$regs[3],$regs[1]);
|
||||
|
||||
//2008-12-31 12:30
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],0,$regs[2],$regs[3],$regs[1]);
|
||||
|
||||
//2008-12-31 12:30:15
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],$regs[6],$regs[2],$regs[3],$regs[1]);
|
||||
|
||||
if($ts=='')
|
||||
{
|
||||
//1.12.2008
|
||||
if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})",$datum, $regs))
|
||||
$ts = mktime(0,0,0,$regs[2],$regs[1],$regs[3]);
|
||||
|
||||
//1.12.2008 12:30
|
||||
if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4}) ([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],0,$regs[2],$regs[1],$regs[3]);
|
||||
|
||||
//1.12.2008 12:30:15
|
||||
if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],$regs[6],$regs[2],$regs[1],$regs[3]);
|
||||
}
|
||||
|
||||
if($ts=='' && !$strict)
|
||||
{
|
||||
$ts = strtotime($datum);
|
||||
|
||||
if(!$ts || $ts==-1)
|
||||
{
|
||||
//wenn strtotime fehlschlaegt liefert diese -1 zurueck, ab php5.1.0 jedoch false
|
||||
$error = true;
|
||||
}
|
||||
}
|
||||
|
||||
if($ts!='' && !$error)
|
||||
return date($format, $ts);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* konvertiert Zeit in format stunden:minuten in Stunden als Dezimalahl
|
||||
* @param $timestring in Form stunden:minuten
|
||||
* @return int Stundenzahl als Dezimalzahl
|
||||
*/
|
||||
public function convertTimeStringToHours($timestring)
|
||||
{
|
||||
return intval(substr($timestring, 0, 2)) + intval(substr($timestring, 3, 2)) / 60;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<?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>.
|
||||
*/
|
||||
|
||||
class datum
|
||||
{
|
||||
public $ts_day=86400; // Timestamp eines Tages
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem String im
|
||||
* Format "31.12.2007 14:30"
|
||||
*/
|
||||
public function mktime_datumundzeit($datumundzeit)
|
||||
{
|
||||
if(mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4}) ([0-9]{2}):([0-9]{2})",$datumundzeit, $regs))
|
||||
return mktime($regs[4],$regs[5],0,$regs[2],$regs[1],$regs[3]);
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem String im
|
||||
* Format "31.12.2007"
|
||||
*/
|
||||
public function mktime_datum($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})",$datum, $regs))
|
||||
{
|
||||
return mktime(0,0,0,$regs[2],$regs[1],$regs[3]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem Datum im
|
||||
* ISO-Format "2007-01-31"
|
||||
*/
|
||||
public function mktime_fromdate($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$datum, $regs))
|
||||
{
|
||||
return mktime(0,0,0,$regs[2],$regs[3],$regs[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert einen UNIX Timestamp von einem String im
|
||||
* Format "2007-01-31 14:30:12"
|
||||
*/
|
||||
public function mktime_fromtimestamp($timestamp)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})",$timestamp, $regs))
|
||||
{
|
||||
return mktime($regs[4],$regs[5],$regs[6],$regs[2],$regs[3],$regs[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Falsches Datumsformat';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Springt von einen UNIX Timestamp ($datum) $wochen nach vor bzw. hinten
|
||||
*/
|
||||
public function jump_week($datum, $wochen)
|
||||
{
|
||||
$days = $wochen * 7;
|
||||
|
||||
$datetime=new DateTime();
|
||||
$datetime->setTimestamp($datum);
|
||||
$datetime->modify($days.' day');
|
||||
return $datetime->format("U");
|
||||
}
|
||||
|
||||
/**
|
||||
* Springt von einen UNIX Timestamp ($datum) $days nach vor bzw. hinten
|
||||
*/
|
||||
public function jump_day($datum, $days)
|
||||
{
|
||||
$stunde_vor=date("G",$datum);
|
||||
// Ein Tag sind 86400 Sekunden
|
||||
$datum+=86400*$days;
|
||||
$stunde_nach=date("G",$datum);
|
||||
if ($stunde_nach!=$stunde_vor)
|
||||
$datum+=3600;
|
||||
return $datum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Konvertiert das ISO Datumsformat (YYYY-MM-DD)
|
||||
* nach (DD.MM.YYYY)
|
||||
*/
|
||||
public function convertISODate($datum)
|
||||
{
|
||||
return (mb_strlen($datum)>0?date('d.m.Y',strtotime($datum)):'');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft Uhrzeit auf Gueltigkeit (HH:MM:SS)
|
||||
* @return true wenn ok, false wenn falsches Format
|
||||
*/
|
||||
public function checkUhrzeit($uhrzeit)
|
||||
{
|
||||
if(mb_ereg("([0-9]{2}):([0-9]{2})(:([0-9]{2}))?$",$uhrzeit))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob das Datum im Format dd.mm.YYYY oder YYYY-mm-dd ist
|
||||
* @return true wenn ok, false wenn falsches Format
|
||||
*/
|
||||
public function checkDatum($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})$",$datum) || mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})$",$datum))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zieht ein Datum von einem anderen ab, und gibt die differenz in Tagen zurueck (mit Vorzeichen)
|
||||
* @param $datum1
|
||||
* @param $datum2
|
||||
*/
|
||||
public function DateDiff($datum1, $datum2)
|
||||
{
|
||||
$datetime1 = new DateTime($datum1);
|
||||
$datetime2 = new DateTime($datum2);
|
||||
$interval = $datetime1->diff($datetime2);
|
||||
return $interval->format('%R%a');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob ein Datum / Datum und Uhrzeit zwischen 2 anderen liegt
|
||||
* Unterstuetzt auch offenes (leeres) Start und Ende Datum
|
||||
*
|
||||
* @param $start Startdatum
|
||||
* @param $ende Endedatum
|
||||
* @param $datum Datum das geprueft wird
|
||||
* @return true wenn dazwischen sonst false
|
||||
*/
|
||||
public function between($start, $ende, $datum)
|
||||
{
|
||||
$datestart = new DateTime($start);
|
||||
$dateende = new DateTime($ende);
|
||||
$dateref = new DateTime($datum);
|
||||
|
||||
// Start und Ende nicht gesetzt
|
||||
if($start=='' && $ende=='')
|
||||
return true;
|
||||
|
||||
// Start nicht gesetzt; Ende gesetzt
|
||||
if($start=='' && $ende!='' && $dateende>=$dateref)
|
||||
return true;
|
||||
|
||||
// Ende nicht gesetzt; Start gesetzt
|
||||
if($ende=='' && $start!='' && $datestart<=$dateref)
|
||||
return true;
|
||||
|
||||
// Start und Ende gesetzt
|
||||
if($ende!='' && $start!='' && $datestart<=$dateref && $dateende>=$dateref)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Summiert 2 Zeiten Stunde:Minute
|
||||
* Es liefert keine Uhrzeit zurueck sondern Stunden und Minuten
|
||||
* zB 12:10 + 23:15 = 35:25
|
||||
*
|
||||
* @param $zeit1
|
||||
* @param $zeit2
|
||||
* @return summe der beiden zeiten im Format Stunden:Minuten
|
||||
*/
|
||||
public function sumZeit($zeit1, $zeit2)
|
||||
{
|
||||
list($h1, $m1) = explode(':', $zeit1);
|
||||
list($h2, $m2) = explode(':', $zeit2);
|
||||
|
||||
$m1 +=$m2;
|
||||
|
||||
if($m1>=60)
|
||||
{
|
||||
$uebertrag = (int)($m1/60);
|
||||
$h1+= $uebertrag;
|
||||
}
|
||||
$m1=$m1%60;
|
||||
$h1+=$h2;
|
||||
if($m1<10)
|
||||
$m1='0'.$m1;
|
||||
if($h1<10)
|
||||
$h1='0'.$h1;
|
||||
|
||||
return $h1.':'.$m1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtrahiert 2 Zeiten ($zeit1-$zeit2) Stunde:Minute
|
||||
* Es liefert keine Uhrzeit zurueck sondern Stunden und Minuten
|
||||
* zB 23:15 - 12:10 = 11:05
|
||||
*
|
||||
* @param $zeit1
|
||||
* @param $zeit2
|
||||
* @return subtraktion der beiden zeiten im Format Stunden:Minuten, null wenn zeit 1 kleiner als zeit2 ist
|
||||
*/
|
||||
public function subZeit($zeit1, $zeit2)
|
||||
{
|
||||
list($h1, $m1) = explode(':', $zeit1);
|
||||
list($h2, $m2) = explode(':', $zeit2);
|
||||
|
||||
if($h1<$h2)
|
||||
return null;
|
||||
else if($h1 == $h2 && $m1<$m2)
|
||||
return null;
|
||||
|
||||
$m1 -=$m2;
|
||||
//echo $h1.','.$m1.','.$h2.','.$m2;
|
||||
if($m1<0)
|
||||
{
|
||||
$m1 = $m1 + 60;
|
||||
$h1 = (int)$h1-1;
|
||||
}
|
||||
$m1=$m1%60;
|
||||
$h1-=$h2;
|
||||
if($m1<10)
|
||||
$m1='0'.$m1;
|
||||
if($h1<10)
|
||||
$h1='0'.$h1;
|
||||
|
||||
return $h1.':'.$m1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft und Liefert ein Datum im angegeben Format
|
||||
* fuer die Formatierung wird die Funktion formatDatum verwendet
|
||||
* @param $datum
|
||||
* @param $format
|
||||
* @param $strict wenn das Datum aus einem Suchfeld komment, dann strict auf TRUE setzen da sonst
|
||||
* Eintraege wie zB 'last Monday' oder 'a' auch in ein Datum umgewandelt werden.
|
||||
* @return Formatierten Timestamp wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function checkformatDatum($datum, $format='Y-m-d H:i:s', $strict=false)
|
||||
{
|
||||
|
||||
@list($day, $month, $year) = @explode(".", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
@list($day, $month, $year) = @explode("-", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
@list($year, $month, $day) = @explode(".", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
@list($year, $month, $day) = @explode("-", $datum);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
|
||||
if (strlen($datum)==6)
|
||||
{
|
||||
$year="20".substr($datum,0,2);
|
||||
$month=substr($datum,2,2);
|
||||
$day=substr($datum,4,2);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
}
|
||||
else if (strlen($datum)==8)
|
||||
{
|
||||
$year=substr($datum,0,4);
|
||||
$month=substr($datum,4,2);
|
||||
$day=substr($datum, 6,2);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
|
||||
$year=substr($datum,5,4);
|
||||
$month=substr($datum,3,2);
|
||||
$day=substr($datum, 0,2);
|
||||
if (@checkdate($month, $day, $year))
|
||||
return $this->formatDatum($datum, $format, $strict);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert ein Datum im angegeben Format
|
||||
* ToDo: Liefert aktuellen Timestamp wenn Sonderzeichen uebergeben werden
|
||||
* zB '---'
|
||||
* @param $datum
|
||||
* @param $format
|
||||
* @param $strict wenn das Datum aus einem Suchfeld kommt, dann strict auf TRUE setzen da sonst
|
||||
* Eintraege wie zB 'last Monday' oder 'a' auch in ein Datum umgewandelt werden.
|
||||
* @return Formatierten Timestamp wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function formatDatum($datum, $format='Y-m-d H:i:s', $strict=false)
|
||||
{
|
||||
if(trim($datum)=='')
|
||||
return '';
|
||||
|
||||
$ts='';
|
||||
$error=false;
|
||||
|
||||
//2008-12-31
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime(0,0,0,$regs[2],$regs[3],$regs[1]);
|
||||
|
||||
//2008-12-31 12:30
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],0,$regs[2],$regs[3],$regs[1]);
|
||||
|
||||
//2008-12-31 12:30:15
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],$regs[6],$regs[2],$regs[3],$regs[1]);
|
||||
|
||||
if($ts=='')
|
||||
{
|
||||
//1.12.2008
|
||||
if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})",$datum, $regs))
|
||||
$ts = mktime(0,0,0,$regs[2],$regs[1],$regs[3]);
|
||||
|
||||
//1.12.2008 12:30
|
||||
if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4}) ([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],0,$regs[2],$regs[1],$regs[3]);
|
||||
|
||||
//1.12.2008 12:30:15
|
||||
if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})",$datum, $regs))
|
||||
$ts = mktime($regs[4],$regs[5],$regs[6],$regs[2],$regs[1],$regs[3]);
|
||||
}
|
||||
|
||||
if($ts=='' && !$strict)
|
||||
{
|
||||
$ts = strtotime($datum);
|
||||
|
||||
if(!$ts || $ts==-1)
|
||||
{
|
||||
//wenn strtotime fehlschlaegt liefert diese -1 zurueck, ab php5.1.0 jedoch false
|
||||
$error = true;
|
||||
}
|
||||
}
|
||||
|
||||
if($ts!='' && !$error)
|
||||
return date($format, $ts);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* konvertiert Zeit in format stunden:minuten in Stunden als Dezimalahl
|
||||
* @param $timestring in Form stunden:minuten
|
||||
* @return int Stundenzahl als Dezimalzahl
|
||||
*/
|
||||
public function convertTimeStringToHours($timestring)
|
||||
{
|
||||
return intval(substr($timestring, 0, 2)) + intval(substr($timestring, 3, 2)) / 60;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -31,12 +31,16 @@ class dokument_export
|
||||
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 $temp_filename; // Dateinamen des Temp. Ausgabefiles
|
||||
private $temp_folder; // Ordner in dem die Temp Dateien abgelegt werden
|
||||
private $signed_filename; // Dateiname der signierten Datei
|
||||
private $images=array();
|
||||
private $sourceDir;
|
||||
public $errormsg;
|
||||
private $unoconv_version;
|
||||
private $sign;
|
||||
private $sign_user;
|
||||
private $sign_profile;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
@@ -151,7 +155,7 @@ class dokument_export
|
||||
$this->xml_data = new DOMDocument;
|
||||
|
||||
if(!$this->xml_data->load($xml_url))
|
||||
die('unable to load xml: '.$xml_url);
|
||||
die('unable to load xml: '.$xml_url.' XML:'.$xml.' PARAMs:'.$params);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -298,6 +302,9 @@ class dokument_export
|
||||
|
||||
}
|
||||
|
||||
if($this->sign)
|
||||
return $this->_sign();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -309,10 +316,18 @@ class dokument_export
|
||||
*/
|
||||
public function output($download=true)
|
||||
{
|
||||
|
||||
$fsize = filesize($this->temp_filename);
|
||||
if(!$handle = fopen($this->temp_filename,'r'))
|
||||
die('load failed');
|
||||
if($this->signed_filename!='')
|
||||
{
|
||||
$fsize = filesize($this->signed_filename);
|
||||
if(!$handle = fopen($this->signed_filename,'r'))
|
||||
die('load failed');
|
||||
}
|
||||
else
|
||||
{
|
||||
$fsize = filesize($this->temp_filename);
|
||||
if(!$handle = fopen($this->temp_filename,'r'))
|
||||
die('load failed');
|
||||
}
|
||||
|
||||
if($download)
|
||||
{
|
||||
@@ -368,6 +383,10 @@ class dokument_export
|
||||
unlink('styles.xml');
|
||||
|
||||
unlink($this->temp_filename);
|
||||
|
||||
if($this->signed_filename != '')
|
||||
unlink($this->signed_filename);
|
||||
|
||||
if(file_exists("out.zip"))
|
||||
unlink('out.zip');
|
||||
|
||||
@@ -461,5 +480,99 @@ class dokument_export
|
||||
{
|
||||
$this->filename = $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Markiert das Dokument zur Signatur
|
||||
* Fuegt automatisch einen XML Tag fuer Signatur zun Dokument hinzu
|
||||
* @param $user User der die Signatur erstellen will
|
||||
* @param $profile Signaturprofil mit der das Dokument signiert werden soll (Optional)
|
||||
*/
|
||||
public function sign($user, $profile = null)
|
||||
{
|
||||
$this->sign = true;
|
||||
$this->sign_user = $user;
|
||||
$this->sign_profile = $profile;
|
||||
|
||||
$signblock = $this->xml_data->createElement("signed","true");
|
||||
$this->xml_data->documentElement->appendChild($signblock);
|
||||
}
|
||||
|
||||
/**
|
||||
* Schickt das Dokument an den Signaturserver um dieses mit einer Amtssignatur zu versehen
|
||||
* Es koennen nur PDFs signiert werden
|
||||
*/
|
||||
private function _sign()
|
||||
{
|
||||
if($this->outputformat != 'pdf')
|
||||
{
|
||||
$this->errormsg = 'Derzeit koennen nur PDFs signiert werden';
|
||||
return false;
|
||||
}
|
||||
|
||||
// Load the File
|
||||
$file_data = file_get_contents($this->temp_filename);
|
||||
|
||||
$data = new stdClass();
|
||||
$data->document = base64_encode($file_data);
|
||||
|
||||
// Signatur Profil
|
||||
if(!is_null($this->sign_profile))
|
||||
$data->profile = $this->sign_profile;
|
||||
else
|
||||
$data->profile = SIGNATUR_DEFAULT_PROFILE;
|
||||
|
||||
// Username des Endusers der die Signatur angefordert hat
|
||||
$data->user = $this->sign_user;
|
||||
|
||||
$ch = curl_init();
|
||||
|
||||
curl_setopt($ch, CURLOPT_URL, SIGNATUR_URL);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, "FH-Complete");
|
||||
|
||||
// SSL Zertifikatsprüfung deaktivieren
|
||||
// Besser ist es das Zertifikat am Server zu installieren!
|
||||
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
|
||||
$data_string = json_encode($data,JSON_FORCE_OBJECT);
|
||||
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json',
|
||||
'Content-Length:'.mb_strlen($data_string),
|
||||
'Authorization: Basic '.base64_encode(SIGNATUR_USER.":".SIGNATUR_PASSWORD)
|
||||
)
|
||||
);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch))
|
||||
{
|
||||
curl_close($ch);
|
||||
$this->errormsg = 'Signaturserver ist derzeit nicht erreichbar';
|
||||
}
|
||||
else
|
||||
{
|
||||
curl_close($ch);
|
||||
$resultdata = json_decode($result);
|
||||
|
||||
if (isset($resultdata->success) && $resultdata->success == 'true')
|
||||
{
|
||||
$this->signed_filename = $this->temp_folder .'/signed.pdf';
|
||||
file_put_contents($this->signed_filename, base64_decode($resultdata->document));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($resultdata->errormsg))
|
||||
$this->errormsg = $resultdata->errormsg;
|
||||
else
|
||||
$this->errormsg = 'Unknown Error:'.print_r($resultdata,true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
<?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>.
|
||||
*/
|
||||
/**
|
||||
* Erstellt ein PDF mithilfe Apache FOP
|
||||
*
|
||||
* $xml = file_get_contents('/path/to/your/xmlfile.xml');
|
||||
* $xsl = file_get_contenst('/path/to/your/xslfile.xsl');
|
||||
* $fop = new fop();
|
||||
* $pdf_filename = $fop->create_pdf($xml, $xsl);
|
||||
*/
|
||||
class fop
|
||||
{
|
||||
var $xml;
|
||||
var $xsl;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Apache FOP
|
||||
}
|
||||
|
||||
public function generatePdf($xml, $xsl, $filename, $destination)
|
||||
{
|
||||
$tmppdf = tempnam('/tmp', 'FAS_FOP');
|
||||
|
||||
$tmpxml = tempnam('/tmp', 'FAS_FOP');
|
||||
$tmpxsl = tempnam('/tmp', 'FAS_FOP');
|
||||
|
||||
$bytes1 = file_put_contents($tmpxml, $xml);
|
||||
$bytes2 = file_put_contents($tmpxsl, $xsl);
|
||||
|
||||
|
||||
exec("fop -xml {$tmpxml} -xsl {$tmpxsl} -pdf {$tmppdf} 2>&1", $output);
|
||||
//error_log("FOP Execute: fop -xml {$tmpxml} -xsl {$tmpxsl} -pdf {$tmppdf} 2>&1 b1:$bytes1 b2: $bytes2 Output: ".print_r($output, true));
|
||||
|
||||
@unlink($tmpxml);
|
||||
@unlink($tmpxsl);
|
||||
|
||||
/*if(count($output)>0)
|
||||
exit(print_r($output, true));*/
|
||||
|
||||
switch($destination)
|
||||
{
|
||||
case "D": // Download
|
||||
$buffer = file_get_contents($tmppdf);
|
||||
if(headers_sent())
|
||||
{
|
||||
echo 'Some data has already been output to browser, can\'t send PDF file';
|
||||
break;
|
||||
}
|
||||
|
||||
if(isset($_SERVER['HTTP_USER_AGENT']) && mb_strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
|
||||
header('Content-Type: application/force-download');
|
||||
else
|
||||
header('Content-Type: application/octet-stream');
|
||||
|
||||
header('Content-Length: '.mb_strlen($buffer));
|
||||
header('Content-disposition: attachment; filename="'.$filename.'.pdf"');
|
||||
|
||||
|
||||
echo $buffer;
|
||||
unlink($tmppdf);
|
||||
break;
|
||||
case "F": // im Filesystem speichern
|
||||
break;
|
||||
|
||||
case "I": //auf Stdout ausgeben
|
||||
echo file_get_contents($tmppdf);
|
||||
break;
|
||||
}
|
||||
|
||||
return($tmppdf);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -96,11 +96,45 @@ $(document).ready(
|
||||
$("#notizform").on("submit", function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
var personId = $("#hiddenpersonid").val();
|
||||
var notizId = $("#notizform :input[name='hiddenNotizId']").val();
|
||||
var data = $(this).serializeArray();
|
||||
saveNotiz(personid, data);
|
||||
|
||||
if (notizId !== '')
|
||||
{
|
||||
updateNotiz(notizId, personId, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
saveNotiz(personId, data);
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
//update notiz - autofill notizform
|
||||
$(document).on("click", "#notiztable tbody tr", function ()
|
||||
{
|
||||
var notizId = $(this).find("td:eq(3)").html();
|
||||
var notizTitle = $(this).find("td:eq(1)").text();
|
||||
var notizContent = this.title;
|
||||
|
||||
$("#notizform label:first").text("Notiz ändern").css("color", "red");
|
||||
$("#notizform :input[type='reset']").css("display", "inline-block");
|
||||
|
||||
$("#notizform :input[name='hiddenNotizId']").val(notizId);
|
||||
$("#notizform :input[name='notiztitel']").val(notizTitle);
|
||||
$("#notizform :input[name='notiz']").val(notizContent);
|
||||
}
|
||||
);
|
||||
|
||||
//update notiz - abbrechen-button: reset styles
|
||||
$("#notizform :input[type='reset']").click(function ()
|
||||
{
|
||||
resetNotizFields();
|
||||
}
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
@@ -220,6 +254,29 @@ function saveNotiz(personid, data)
|
||||
});
|
||||
}
|
||||
|
||||
function updateNotiz(notizId, personId, data)
|
||||
{
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: data,
|
||||
url: "../updateNotiz/" + notizId + "/" + personId,
|
||||
success: function (data, textStatus, jqXHR)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
refreshNotizen();
|
||||
refreshLog();
|
||||
resetNotizFields();
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
alert(textStatus + " - " + errorThrown + " - " + jqXHR.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// methods executed after ajax (refreshers)
|
||||
|
||||
@@ -252,7 +309,7 @@ function refreshNotizen()
|
||||
//readd tablesorter
|
||||
formatNotizTable()
|
||||
}
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
function formatNotizTable()
|
||||
@@ -261,3 +318,10 @@ function formatNotizTable()
|
||||
tablesortAddPager("notiztable", "notizpager", 10);
|
||||
$("#notiztable").addClass("table-condensed");
|
||||
}
|
||||
|
||||
function resetNotizFields()
|
||||
{
|
||||
$("#notizform :input[name='hiddenNotizId']").val("");
|
||||
$("#notizform label:first").text("Notiz hinzufügen").css("color", "black");
|
||||
$("#notizform :input[type='reset']").css("display", "none");
|
||||
}
|
||||
|
||||
@@ -111,3 +111,22 @@ function setTableActions()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refreshes the side menu
|
||||
*/
|
||||
function refreshSideMenu()
|
||||
{
|
||||
$.ajax({
|
||||
url: window.location.pathname+"/setNavigationMenuArray",
|
||||
method: "GET",
|
||||
data: {}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
renderSideMenu();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
+23
-2
@@ -96,7 +96,8 @@ class mail
|
||||
|
||||
$header .= 'X-Mailer: FHComplete V1'.$eol;
|
||||
$header .= 'Mime-Version: 1.0'.$eol;
|
||||
$header .= "Content-Type: multipart/mixed; boundary=\"$mime_boundary_mixed\"".$eol;
|
||||
$header .= "Content-Type: multipart/related; boundary=\"$mime_boundary_mixed\"".$eol;
|
||||
$header .= "Content-Transfer-Encoding: 8bit".$eol;
|
||||
|
||||
// Body
|
||||
$mailbody = "";
|
||||
@@ -152,7 +153,7 @@ class mail
|
||||
$dispo = empty($attachment[3]) ? 'attachment' : 'inline';
|
||||
$mailbody .= $eol;
|
||||
$mailbody .= "Content-Disposition: $dispo; filename={$attachment[2]}".$eol;
|
||||
$mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol;
|
||||
$mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol;
|
||||
if (!empty($attachment[3]))
|
||||
{
|
||||
$mailbody .= "Content-ID: <{$attachment[3]}>".$eol;
|
||||
@@ -231,6 +232,26 @@ class mail
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fuegt ein Bild zum Mail hinzu
|
||||
* $image image-URL
|
||||
* $type MIME Type "image/[image-type]", zB "image/jpg"
|
||||
* $name Anzeigename des Files
|
||||
* $ContentID ContentID für inline-embedding (diese muss im script im tag <img src="cid:ContentID"> angegeben werden)
|
||||
*/
|
||||
public function addEmbeddedImage ($image, $type, $name = '', $ContentID)
|
||||
{
|
||||
$image_string = file_get_contents($image);
|
||||
if (!$image_string)
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Einlesen der Datei';
|
||||
return false;
|
||||
}
|
||||
|
||||
$image_b64 = chunk_split(base64_encode($image_string), 76, "\n");
|
||||
$this->attachments[] = Array($image_b64, $type, $name, $ContentID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fuegt ein Attachment zum Mail hinzu
|
||||
* $content
|
||||
|
||||
@@ -1,263 +0,0 @@
|
||||
<?php
|
||||
/* Copyright (C) 2008 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>.
|
||||
*/
|
||||
|
||||
//PDF fuer die Anwesenheitsliste auf CIS
|
||||
|
||||
$db = new basis_db();
|
||||
|
||||
//PDF erzeugen
|
||||
$pdf = new PDF('P','pt');
|
||||
$pdf->Open();
|
||||
$pdf->AddPage();
|
||||
$pdf->AliasNbPages();
|
||||
|
||||
$pdf->SetFillColor(111,111,111);
|
||||
$pdf->SetXY(30,40);
|
||||
$stgobj=new studiengang();
|
||||
$stgobj->load($stg);
|
||||
//Logo
|
||||
$pdf->Image("../../../skin/styles/tw/logo.jpg","470","45","","50","jpg","");
|
||||
//$pdf->Image("../../../skin/images/tw_logo_02.jpg","400","30","116","43","jpg","");
|
||||
|
||||
$bezeichnung='';
|
||||
if ($lvobj = new lehrveranstaltung($lvid))
|
||||
$bezeichnung=mb_convert_encoding($lvobj->bezeichnung,'ISO-8859-15','UTF-8');
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','',16);
|
||||
$pdf->MultiCell(0,20,'Fotoliste '.$bezeichnung,0,'L',0);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetFillColor(190,190,190);
|
||||
//Bei langen Namen muss der Gruppenname etwas weiter unten angezeigt werden da er
|
||||
//sonst von der zweiten Zeile des Titels ueberschrieben wird.
|
||||
if(strlen($bezeichnung)>50)
|
||||
$pdf->SetXY(30,75);
|
||||
else
|
||||
$pdf->SetXY(30,60);
|
||||
|
||||
//$stsem_obj = new studiensemester($conn);
|
||||
//$stsem = $stsem_obj->getaktorNext();
|
||||
|
||||
$qry = "SELECT DISTINCT ON
|
||||
(kuerzel, semester, verband, gruppe, gruppe_kurzbz)
|
||||
UPPER(stg_typ::varchar(1) || stg_kurzbz) as kuerzel,
|
||||
semester,
|
||||
verband,
|
||||
gruppe,
|
||||
gruppe_kurzbz
|
||||
FROM
|
||||
campus.vw_lehreinheit
|
||||
WHERE
|
||||
lehrveranstaltung_id=".$db->db_add_param($lvid)."
|
||||
AND
|
||||
studiensemester_kurzbz=".$db->db_add_param($stsem);
|
||||
if($lehreinheit_id!='')
|
||||
$qry.=" AND lehreinheit_id=".$db->db_add_param($lehreinheit_id);
|
||||
|
||||
$gruppen='';
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
if($gruppen!='')
|
||||
$gruppen.=', ';
|
||||
if($row->gruppe_kurzbz=='')
|
||||
$gruppen.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe);
|
||||
else
|
||||
$gruppen.=$row->gruppe_kurzbz;
|
||||
}
|
||||
}
|
||||
$gruppen=mb_convert_encoding($gruppen,'ISO-8859-15','UTF-8');
|
||||
|
||||
$pdf->MultiCell(0,20,'Gruppe: '.$gruppen);
|
||||
$semester = new studiensemester($stsem);
|
||||
$pdf->MultiCell(0,20,'Studiensemester: '.(($semester->beschreibung != '') ? $semester->beschreibung : $stsem));
|
||||
|
||||
$maxY=$pdf->GetY();
|
||||
$maxY=getmax($maxY,$pdf->GetY());
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','B',12);
|
||||
|
||||
//Studenten
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$maxY=$pdf->GetY();
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
|
||||
$maxY=$pdf->GetY();
|
||||
$pdf->tablewidths = array(20,140,60,60,60); //Spaltenbreiten setzen
|
||||
$pdf->SetLeftMargin(30);
|
||||
$pdf->SetTopMargin(100); // Auch in der Funktion Header umstellen!!!
|
||||
|
||||
$aligns = array('R','L','C','C','C'); //Ausrichtung der Tabellen festlegen
|
||||
$maxY+=10;
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->SetXY(30,$maxY);
|
||||
$lineheight=10;
|
||||
|
||||
//Studenten holen
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$maxY=$pdf->GetY();
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(20,$lineheight,'',1,'R',0);
|
||||
$maxX +=20;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','B',8);
|
||||
$pdf->MultiCell(130,$lineheight,mb_convert_encoding('HörerIn/Name','ISO-8859-15','UTF-8'),1,'L',0);
|
||||
$maxX +=130;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(70,$lineheight,'Kennzeichen',1,'C',0);
|
||||
$maxX +=70;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(65,$lineheight,'Gruppe',1,'C',0);
|
||||
$maxX +=65;
|
||||
//$pdf->SetXY($maxX,$maxY);
|
||||
//$pdf->MultiCell(80,$lineheight,'Foto',1,'C',0);
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem_obj->load($stsem);
|
||||
$stsemdatumvon = $stsem_obj->start;
|
||||
$stsemdatumbis = $stsem_obj->ende;
|
||||
$qry = "SELECT
|
||||
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, foto_sperre,
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
|
||||
tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von,
|
||||
tbl_zeugnisnote.note
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
WHERE
|
||||
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid)." AND
|
||||
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);
|
||||
|
||||
if($lehreinheit_id!='')
|
||||
$qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id);
|
||||
$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC';
|
||||
|
||||
$lineheight=80;
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$i=0;
|
||||
while($elem = $db->db_fetch_object($result))
|
||||
{
|
||||
//Abbrecher und Unterbrecher nicht anzeigen
|
||||
if($elem->status!='Abbrecher' && $elem->status!='Unterbrecher')
|
||||
{
|
||||
$i++;
|
||||
if($i%2)
|
||||
$pdf->SetFillColor(190,190,190);
|
||||
else
|
||||
$pdf->SetFillColor(255,255,255);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$maxY=$pdf->GetY();
|
||||
if($maxY>660)
|
||||
{
|
||||
$pdf->AddPage();
|
||||
$maxY=$pdf->GetY();
|
||||
}
|
||||
|
||||
|
||||
$vorname=mb_convert_encoding(trim($elem->vorname),'ISO-8859-15','UTF-8');
|
||||
$nachname=mb_convert_encoding(trim($elem->nachname),'ISO-8859-15','UTF-8');
|
||||
$name="$vorname $nachname";
|
||||
|
||||
$matrikelnr=trim(mb_convert_encoding($elem->matrikelnr,'ISO-8859-15','UTF-8'));
|
||||
|
||||
$sem_verb_grup=trim(mb_convert_encoding($elem->semester.$elem->verband.$elem->gruppe,'ISO-8859-15','UTF-8'));
|
||||
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(20,$lineheight,$i,1,'R',1);
|
||||
$maxX +=20;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Courier','B',10);
|
||||
$pdf->MultiCell(130,$lineheight,$nachname,1,'L',1);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY($maxX+strlen($nachname)*6+2,$maxY);
|
||||
if($elem->status=='Incoming')
|
||||
$inc=' (i)';
|
||||
else
|
||||
$inc='';
|
||||
|
||||
if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing
|
||||
$inc.=' (o)';
|
||||
|
||||
if($elem->note==6) //angerechnet
|
||||
$inc.=' (ar)';
|
||||
|
||||
$pdf->MultiCell(130,$lineheight,$vorname.$inc,0,'L',0);
|
||||
$maxX +=130;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->MultiCell(70,$lineheight,trim($matrikelnr),1,'C',1);
|
||||
$maxX +=70;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->MultiCell(65,$lineheight,$sem_verb_grup,1,'C',1);
|
||||
$maxX +=65;
|
||||
// $pdf->SetXY($maxX,$maxY);
|
||||
// $pdf->MultiCell(80,$lineheight,'',0,'L',1);
|
||||
if($elem->foto_sperre=='f')
|
||||
{
|
||||
$pdf->Image(APP_ROOT."cis/public/bild.php?src=person&person_id=".$elem->person_id,$maxX+1,$maxY+1,0,"78","jpg","");
|
||||
}
|
||||
$inhalt[]=array($i,$name,$matrikelnr,$sem_verb_grup,'');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$lineheight=10;
|
||||
//Fussnote
|
||||
$maxY=$pdf->GetY()+5;
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->MultiCell(520,$lineheight,'(i) ... Incoming',0,'L',0);
|
||||
$pdf->MultiCell(520,$lineheight,'(o) ... Outgoing',0,'L',0);
|
||||
$pdf->MultiCell(520,$lineheight,'(ar) ... angerechnet',0,'L',0);
|
||||
|
||||
//FHStg
|
||||
$maxY=$pdf->GetY()+5;
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','B',8);
|
||||
|
||||
$bezeichnung=mb_convert_encoding('Fachhochschulstudiengang ('.strtoupper($stgobj->typ).') '.$stgobj->bezeichnung,'ISO-8859-15','UTF-8');
|
||||
$pdf->MultiCell(520,$lineheight,$bezeichnung,0,'L',0);
|
||||
|
||||
//FHStg
|
||||
/*
|
||||
$maxY=$pdf->GetY();
|
||||
$maxX=30;
|
||||
$pdf->SetXY($maxX,$maxY);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->MultiCell(520,$lineheight,'Fehlt ein Student l�nger als 2 Wochen, bitte um einen deutlichen Vermerk auf der Anwesenheitsliste. Die Anwesenheitsliste bitte am Ende des Monats im Sekretariat abgeben! Bitte achten Sie darauf, dass Sie nur VOLLST�NDIG AUSGEF�LLTE LISTEN abgeben!',0,'L',0);
|
||||
*/
|
||||
|
||||
$pdf->Output('fotoliste.pdf','I');
|
||||
?>
|
||||
@@ -109,7 +109,7 @@ $menu=array
|
||||
'Benutzer'=>array
|
||||
(
|
||||
'name'=>'Benutzer','permissions'=>array('admin','lv-plan','support'),
|
||||
'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main'),
|
||||
'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main', 'permissions'=>array('mitarbeiter')),
|
||||
'Berechtigungen'=>array('name'=>'Berechtigungen', 'link'=>'stammdaten/benutzerberechtigung_frameset.html', 'target'=>'main','permissions'=>array('basis/berechtigung')),
|
||||
'Rollen'=>array('name'=>'Rollen', 'link'=>'stammdaten/berechtigungrolle.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
|
||||
'Variablen'=>array('name'=>'Variablen', 'link'=>'stammdaten/variablen_frameset.html', 'target'=>'main', 'target'=>'main','permissions'=>array('basis/variable')),
|
||||
@@ -188,7 +188,7 @@ $menu=array
|
||||
'Firmenwartung'=>array('name'=>'Firmenwartung', 'link'=>'stammdaten/firma_zusammen_uebersicht.php', 'target'=>'main','permissions'=>array('basis/firma')),
|
||||
'checkStudenten'=>array('name'=>'CheckStudenten', 'link'=>'../system/checkStudenten.php', 'target'=>'main', 'permissions'=>array('student/stammdaten')),
|
||||
'StudienplanZuteilung'=>array('name'=>'Studienplan Zuteilung', 'link'=>'lehre/studienplan_zuteilung.php', 'target'=>'main','permissions'=>array('assistenz')),
|
||||
'lv_merge'=>array('name'=>'LVs zusammenlegen', 'link'=>'lehre/lv_merge.php', 'target'=>'main','permissions'=>array('admin','lv-plan')),
|
||||
'lv_merge'=>array('name'=>'LVs zusammenlegen', 'link'=>'lehre/lv_merge.php', 'target'=>'main','permissions'=>array('lehre/lehrveranstaltung')),
|
||||
'akteupdate'=>array('name'=>'Akten überschreiben', 'link'=>'personen/akteupdate.php', 'target'=>'main','permissions'=>array('admin')),
|
||||
),
|
||||
'Auswertung'=> array
|
||||
|
||||
@@ -48,6 +48,11 @@ class vorlage extends basis_db
|
||||
public $anmerkung_vorlagestudiengang; // text
|
||||
public $aktiv; // boolean
|
||||
|
||||
public $archivierbar = false;
|
||||
public $signierbar = false;
|
||||
public $stud_selfservice = false;
|
||||
public $dokument_kurzbz;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
@@ -72,6 +77,10 @@ class vorlage extends basis_db
|
||||
$this->bezeichnung = $row->bezeichnung;
|
||||
$this->anmerkung = $row->anmerkung;
|
||||
$this->mimetype = $row->mimetype;
|
||||
$this->signierbar = $this->db_parse_bool($row->signierbar);
|
||||
$this->archivierbar = $this->db_parse_bool($row->archivierbar);
|
||||
$this->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
$this->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -100,18 +109,27 @@ class vorlage extends basis_db
|
||||
|
||||
if($new)
|
||||
{
|
||||
$qry = "INSERT INTO public.tbl_vorlage(vorlage_kurzbz, bezeichnung, anmerkung, mimetype) VALUES(".
|
||||
$qry = "INSERT INTO public.tbl_vorlage(vorlage_kurzbz, bezeichnung, anmerkung, mimetype,
|
||||
archivierbar, signierbar, stud_selfservice, dokument_kurzbz) VALUES(".
|
||||
$this->db_add_param($this->vorlage_kurzbz).','.
|
||||
$this->db_add_param($this->bezeichnung).','.
|
||||
$this->db_add_param($this->anmerkung).','.
|
||||
$this->db_add_param($this->mimetype).');';
|
||||
$this->db_add_param($this->mimetype).','.
|
||||
$this->db_add_param($this->archivierbar, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->signierbar, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->dokument_kurzbz).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE public.tbl_vorlage
|
||||
SET bezeichnung='.$this->db_add_param($this->bezeichnung).',
|
||||
anmerkung='.$this->db_add_param($this->anmerkung).',
|
||||
mimetype='.$this->db_add_param($this->mimetype).'
|
||||
mimetype='.$this->db_add_param($this->mimetype).',
|
||||
archivierbar='.$this->db_add_param($this->archivierbar, FHC_BOOLEAN).',
|
||||
signierbar='.$this->db_add_param($this->signierbar, FHC_BOOLEAN).',
|
||||
stud_selfservice='.$this->db_add_param($this->stud_selfservice, FHC_BOOLEAN).',
|
||||
dokument_kurzbz='.$this->db_add_param($this->dokument_kurzbz).'
|
||||
WHERE vorlage_kurzbz='.$this->db_add_param($this->vorlage_kurzbz).';';
|
||||
}
|
||||
|
||||
@@ -143,6 +161,38 @@ class vorlage extends basis_db
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->anmerkung = $row->anmerkung;
|
||||
$obj->mimetype = $row->mimetype;
|
||||
$obj->signierbar = $this->db_parse_bool($row->signierbar);
|
||||
$obj->archivierbar = $this->db_parse_bool($row->archivierbar);
|
||||
$obj->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
$obj->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert alle Vorlagen die archiviert werden koennen
|
||||
*/
|
||||
public function getVorlagenArchiv()
|
||||
{
|
||||
$qry ="SELECT * FROM public.tbl_vorlage WHERE archivierbar=true ORDER BY bezeichnung";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new vorlage();
|
||||
$obj->vorlage_kurzbz = $row->vorlage_kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->anmerkung = $row->anmerkung;
|
||||
$obj->mimetype = $row->mimetype;
|
||||
$obj->archivierbar = $this->db_parse_bool($row->archivierbar);
|
||||
$obj->signierbar = $this->db_parse_bool($row->signierbar);
|
||||
$obj->stud_selfservice = $this->db_parse_bool($row->stud_selfservice);
|
||||
$obj->dokument_kurzbz = $row->dokument_kurzbz;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
@@ -311,7 +361,7 @@ class vorlage extends basis_db
|
||||
anmerkung_vorlagestudiengang='.$this->db_add_param($this->anmerkung_vorlagestudiengang).'
|
||||
WHERE vorlagestudiengang_id='.$this->db_add_param($this->vorlagestudiengang_id).';';
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -1,188 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master
|
||||
margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.75cm"
|
||||
page-width="21cm" page-height="29.7cm" master-name="first">
|
||||
<fo:region-body></fo:region-body>
|
||||
</fo:simple-page-master>
|
||||
<fo:simple-page-master
|
||||
margin-right="2.5cm" margin-left="2.5cm" margin-bottom="2cm" margin-top="1cm"
|
||||
page-width="21cm" page-height="29.7cm" master-name="rest">
|
||||
<fo:region-body></fo:region-body>
|
||||
</fo:simple-page-master>
|
||||
|
||||
<fo:page-sequence-master master-name="psmA">
|
||||
<fo:repeatable-page-master-alternatives>
|
||||
<fo:conditional-page-master-reference master-reference="first"
|
||||
page-position="first" />
|
||||
<fo:conditional-page-master-reference master-reference="rest"
|
||||
page-position="rest" />
|
||||
<!-- recommended fallback procedure -->
|
||||
<fo:conditional-page-master-reference master-reference="rest" />
|
||||
</fo:repeatable-page-master-alternatives>
|
||||
</fo:page-sequence-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="psmA">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block-container height="4cm" width="12cm" top="0cm" left="0cm" position="absolute">
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
PX7.net
|
||||
</fo:block>
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
44 Liberty St
|
||||
</fo:block>
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
Newburyport, MA 01950
|
||||
</fo:block>
|
||||
<fo:block text-align="start" line-height="18pt" font-family="sans-serif" font-weight="bold" font-size="14pt">
|
||||
978-462-1152
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container height="1cm" width="6cm" top="0cm" left="14cm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="22pt" font-family="sans-serif" font-size="23pt">
|
||||
Sales Receipt
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.2cm" left="13.8cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
DATE
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.87cm" left="13.8cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
01/01/2000
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.2cm" left="16.46cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
SALE #
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="2.49cm" top="1.87cm" left="16.46cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
1
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="8.95cm" top="3cm" left="0cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
SOLD TO
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="3cm" width="8.95cm" top="3.67cm" left="0cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="8.95cm" top="3cm" left="10cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
SHIP TO
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="3cm" width="8.95cm" top="3.67cm" left="10cm" padding=".6mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="7.25cm" left="10.74cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
PMT METHOD
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="8cm" left="10.74cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
Check
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="7.25cm" left="14.95cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="12pt">
|
||||
CHECK #
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width=".5mm" height="0.5cm" width="3.96cm" top="8cm" left="14.95cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="14pt" font-family="sans-serif" font-size="10pt">
|
||||
1234
|
||||
</fo:block>
|
||||
</fo:block-container>
|
||||
|
||||
|
||||
<fo:block-container height="17cm" width="19cm" top="9.4cm" left="0cm" position="absolute">
|
||||
<fo:table table-layout="fixed" border-collapse="separate" border-color="yellow" border-style="solid" border-width=".6mm" height="17cm">
|
||||
<fo:table-column column-width="2.5cm"/>
|
||||
<fo:table-column column-width="11.5cm"/>
|
||||
<fo:table-column column-width="2.5cm"/>
|
||||
<fo:table-column column-width="2.5cm"/>
|
||||
<fo:table-body font-family="sans-serif" font-weight="normal" font-size="10pt">
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell border-width="1pt" border-color="green" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="end">QUANTITY</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell border-width="1pt" border-color="red" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="start">DESCRIPTION</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell border-color="blue" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="center">RATE</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell border-color="orange" border-style="solid" padding="1mm">
|
||||
<fo:block text-align="center">AMOUNT</fo:block>
|
||||
</fo:table-cell>
|
||||
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">1</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="start">Wide Widget</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">$22.23</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">22.31</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">1</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="start">Widget</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">$22.23</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">22.31</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">3</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="start">Nuts</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">$12.00</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell padding="2pt">
|
||||
<fo:block text-align="end">36.00</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width="0.5mm" height="1cm" width="13.31cm" top="26.5cm" left="0cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" line-height="15pt" font-family="sans-serif" font-size="12pt">Please remit to the above address</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width="0.5mm" height="1cm" width="2.5cm" top="26.5cm" left="13.56cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="25pt" font-family="sans-serif" font-size="22pt">Total</fo:block>
|
||||
</fo:block-container>
|
||||
<fo:block-container border-color="black" border-style="solid" border-width="0.5mm" height="1cm" width="2.5cm" top="26.5cm" left="16.31cm" padding="1mm" position="absolute">
|
||||
<fo:block text-align="start" space-after.optimum="3pt" line-height="15pt" font-family="sans-serif" font-size="10pt">$3.00</fo:block>
|
||||
</fo:block-container>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,145 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
<!-- defines page layout -->
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="first"
|
||||
page-height="29.7cm" page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<!-- end: defines page layout -->
|
||||
|
||||
<!-- actual layout -->
|
||||
<fo:page-sequence master-reference="first">
|
||||
|
||||
<!-- text body -->
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">0. Normal text without link
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center"
|
||||
font-family="serif">1. <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">
|
||||
2. A one line example (text-align='start'): <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start" hyphenate="true" language="en">
|
||||
3. A multiline text (text-align='start'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">
|
||||
4. A multiline text (text-align='centered'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="end">
|
||||
5. A multiline text (text-align='end'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="justify" hyphenate="true" language="en">
|
||||
6. A multiline text (text-align='justify'). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="center">---</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
7. A multiline text (text-align='start', space-before.optimum=6pt, font-family=serif padding-top="3pt"). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable <fo:basic-link external-destination="normal.pdf">generic</fo:basic-link> SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
8. A multiline text (text-align='start', space-before.optimum=6pt, font-family=serif, padding-top="3pt"). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable <fo:basic-link external-destination="normal.pdf">generic</fo:basic-link> SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- Normal text -->
|
||||
<!-- <fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
8. A multiline text (text-align='start', space-before.optimum=6pt, font-family=serif, padding-top="3pt"). The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable <fo:basic-link external-destination="normal.pdf">generic</fo:basic-link> SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML. For further information
|
||||
go to <fo:basic-link external-destination="normal.pdf">normal.pdf</fo:basic-link>
|
||||
</fo:block>
|
||||
-->
|
||||
<!-- Normal text -->
|
||||
<fo:block text-align="start"
|
||||
space-before.optimum="6pt"
|
||||
line-height="24pt"
|
||||
font-family="serif"
|
||||
padding-top="3pt"
|
||||
>
|
||||
9. Linking to a specific page of an external:
|
||||
<fo:basic-link external-destination="extensive.pdf#page=1">extensive.pdf, Page 2</fo:basic-link>.
|
||||
</fo:block>
|
||||
|
||||
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,149 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
<!-- example for a simple fo file. At the beginning the page layout is set.
|
||||
Below fo:root there is always
|
||||
- a single fo:layout-master-set which defines one or more page layouts
|
||||
- an optional fo:declarations,
|
||||
- and a sequence of one or more fo:page-sequences containing the text and formatting instructions -->
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
<fo:layout-master-set>
|
||||
<!-- fo:layout-master-set defines in its children the page layout:
|
||||
the pagination and layout specifications
|
||||
- page-masters: have the role of describing the intended subdivisions
|
||||
of a page and the geometry of these subdivisions
|
||||
- page-sequence-masters: have the role of describing the sequence
|
||||
of page-masters that will be used to generate
|
||||
pages during the formatting of an fo:page-sequence
|
||||
|
||||
-->
|
||||
|
||||
<!-- layout for the first page -->
|
||||
<fo:simple-page-master master-name="first"
|
||||
page-height="21cm"
|
||||
page-width="29.7cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
|
||||
<!-- layout for the other pages -->
|
||||
<fo:simple-page-master master-name="rest"
|
||||
page-height="29.7cm"
|
||||
page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="2.5cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="2.5cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
|
||||
<fo:page-sequence-master master-name="basicPSM" >
|
||||
<fo:repeatable-page-master-alternatives>
|
||||
<fo:conditional-page-master-reference master-reference="first"
|
||||
page-position="first" />
|
||||
<fo:conditional-page-master-reference master-reference="rest"
|
||||
page-position="rest" />
|
||||
<!-- recommended fallback procedure -->
|
||||
<fo:conditional-page-master-reference master-reference="rest" />
|
||||
</fo:repeatable-page-master-alternatives>
|
||||
</fo:page-sequence-master>
|
||||
|
||||
</fo:layout-master-set>
|
||||
<!-- end: defines page layout -->
|
||||
|
||||
<!-- actual layout -->
|
||||
<fo:page-sequence master-reference="basicPSM">
|
||||
|
||||
<!-- header -->
|
||||
<fo:static-content flow-name="xsl-region-before">
|
||||
<fo:block text-align="end"
|
||||
font-size="10pt"
|
||||
font-family="serif"
|
||||
line-height="14pt" >
|
||||
XML Recommendation - p. <fo:page-number/>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- defines text title level 1-->
|
||||
<fo:block font-size="18pt"
|
||||
font-family="sans-serif"
|
||||
line-height="24pt"
|
||||
space-after.optimum="15pt"
|
||||
background-color="blue"
|
||||
color="white"
|
||||
text-align="center"
|
||||
padding-top="3pt"
|
||||
font-variant="small-caps">
|
||||
Extensible Markup Language (XML) 1.0
|
||||
</fo:block>
|
||||
|
||||
<!-- defines text title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
line-height="20pt"
|
||||
space-before.optimum="10pt"
|
||||
space-after.optimum="10pt"
|
||||
text-align="start"
|
||||
padding-top="3pt">
|
||||
Abstract
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="start">
|
||||
The <fo:inline font-variant="small-caps">Extensible Markup Language (XML)</fo:inline> is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML.
|
||||
</fo:block>
|
||||
|
||||
<!-- defines text title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
line-height="20pt"
|
||||
space-before.optimum="10pt"
|
||||
space-after.optimum="10pt"
|
||||
text-align="start"
|
||||
padding-top="3pt">
|
||||
Status of this document
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="start">
|
||||
This document has been reviewed by W3C Members and other interested parties and has been endorsed by the Director as a
|
||||
W3C Recommendation. It is a stable document and may be used as reference material or cited as a normative reference from
|
||||
another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its
|
||||
widespread deployment. This enhances the functionality and interoperability of the Web.
|
||||
</fo:block>
|
||||
|
||||
<!-- Normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="start">
|
||||
This document specifies a syntax created by subsetting an existing, widely used international text processing standard
|
||||
(Standard Generalized Markup Language, ISO 8879:1986(E) as amended and corrected) for use on the World Wide Web. It
|
||||
is a product of the W3C XML Activity, details of which can be found at http://www.w3.org/XML. A list of current W3C
|
||||
Recommendations and other technical documents can be found at http://www.w3.org/TR.
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,99 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!-- example for a simple fo file. At the beginning the page layout is set.
|
||||
Below fo:root there is always
|
||||
- a single fo:layout-master-set which defines one or more page layouts
|
||||
- an optional fo:declarations
|
||||
- and a sequence of one or more fo:page-sequences containing the text and formatting instructions
|
||||
-->
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
<fo:layout-master-set>
|
||||
<!-- fo:layout-master-set defines in its children the page layout:
|
||||
the pagination and layout specifications
|
||||
- page-masters: have the role of describing the intended subdivisions
|
||||
of a page and the geometry of these subdivisions
|
||||
In this case there is only a simple-page-master which defines the
|
||||
layout for all pages of the text
|
||||
-->
|
||||
<!-- layout information -->
|
||||
<fo:simple-page-master master-name="simple"
|
||||
page-height="29.7cm"
|
||||
page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<!-- end: defines page layout -->
|
||||
|
||||
|
||||
<!-- start page-sequence
|
||||
here comes the text (contained in flow objects)
|
||||
the page-sequence can contain different fo:flows
|
||||
the attribute value of master-name refers to the page layout
|
||||
which is to be used to layout the text contained in this
|
||||
page-sequence-->
|
||||
<fo:page-sequence master-reference="simple">
|
||||
|
||||
<!-- start fo:flow
|
||||
each flow is targeted
|
||||
at one (and only one) of the following:
|
||||
xsl-region-body (usually: normal text)
|
||||
xsl-region-before (usually: header)
|
||||
xsl-region-after (usually: footer)
|
||||
xsl-region-start (usually: left margin)
|
||||
xsl-region-end (usually: right margin)
|
||||
['usually' applies here to languages with left-right and top-down
|
||||
writing direction like English]
|
||||
in this case there is only one target: xsl-region-body
|
||||
-->
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- each paragraph is encapsulated in a block element
|
||||
the attributes of the block define
|
||||
font-family and size, line-heigth etc. -->
|
||||
|
||||
<!-- this defines a title -->
|
||||
<fo:block font-size="18pt"
|
||||
font-family="sans-serif"
|
||||
line-height="24pt"
|
||||
space-after.optimum="15pt"
|
||||
background-color="blue"
|
||||
color="white"
|
||||
text-align="center"
|
||||
padding-top="3pt">
|
||||
Extensible Markup Language (XML) 1.0
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- this defines normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="justify">
|
||||
The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML.
|
||||
</fo:block>
|
||||
|
||||
<!-- this defines normal text -->
|
||||
<fo:block font-size="12pt"
|
||||
font-family="sans-serif"
|
||||
line-height="15pt"
|
||||
space-after.optimum="3pt"
|
||||
text-align="justify">
|
||||
The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to
|
||||
enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML
|
||||
has been designed for ease of implementation and for interoperability with both SGML and HTML.
|
||||
</fo:block>
|
||||
|
||||
</fo:flow> <!-- closes the flow element-->
|
||||
</fo:page-sequence> <!-- closes the page-sequence -->
|
||||
</fo:root>
|
||||
@@ -1,504 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
|
||||
|
||||
<!-- defines the layout master -->
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="first"
|
||||
page-height="29.7cm"
|
||||
page-width="21cm"
|
||||
margin-top="1cm"
|
||||
margin-bottom="2cm"
|
||||
margin-left="2.5cm"
|
||||
margin-right="2.5cm">
|
||||
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
|
||||
<fo:region-before extent="3cm"/>
|
||||
<fo:region-after extent="1.5cm"/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
|
||||
<!-- starts actual layout -->
|
||||
<fo:page-sequence master-reference="first">
|
||||
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
|
||||
<!-- this defines a title level 1-->
|
||||
<fo:block font-size="18pt"
|
||||
font-family="sans-serif"
|
||||
line-height="24pt"
|
||||
space-after.optimum="15pt"
|
||||
background-color="blue"
|
||||
color="white"
|
||||
text-align="center"
|
||||
padding-top="3pt">
|
||||
How to use table elements
|
||||
</fo:block>
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center">
|
||||
A simple table, 3 columns, 4 rows
|
||||
</fo:block>
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
A table with borders
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-width="0.5mm" border-style="solid" background-color="yellow">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
A table with thick borders
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-width="3mm" border-style="solid" background-color="yellow">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell ><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell ><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start" start-indent="-3mm">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
A table with borders around the cells
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-collapse="separate">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="0.5mm" border-style="solid" background-color="yellow"><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
2 tables with thick borders around the cells
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-collapse="separate">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- table start -->
|
||||
<fo:table table-layout="fixed" border-collapse="separate">
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-column column-width="50mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>good</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>bad</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>ugly</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>nice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>dice</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>vice</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>literature</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>music</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>art</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>java</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>perl</fo:block></fo:table-cell>
|
||||
<fo:table-cell border-width="2mm" border-style="solid" background-color="yellow"><fo:block>python</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
<!-- table end -->
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
|
||||
<!-- this defines a title level 2-->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
space-after.optimum="15pt"
|
||||
text-align="center"
|
||||
break-before="page">
|
||||
5 tables with borders
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)">
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)" >
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)" >
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
<fo:table table-layout="fixed" border-width="1.5mm" border-style="solid" background-color="rgb(100,210,250)">
|
||||
<fo:table-column column-width="150mm"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell><fo:block>bad</fo:block></fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
<!-- normal text -->
|
||||
<fo:block text-align="start">this is normal text. this is normal text. this is normal text.
|
||||
this is normal text. this is normal text. this is normal text.
|
||||
</fo:block>
|
||||
|
||||
|
||||
<!-- **************************** NEW PAGE ************************************* -->
|
||||
<fo:block font-size="16pt"
|
||||
font-family="sans-serif"
|
||||
line-height="20pt"
|
||||
space-after.optimum="3pt"
|
||||
break-before="page"
|
||||
text-align="justify">
|
||||
A Contents table
|
||||
</fo:block>
|
||||
|
||||
<!-- Here starts the table -->
|
||||
<fo:table table-layout="fixed">
|
||||
<fo:table-column column-width="1cm"/>
|
||||
<fo:table-column column-width="15cm"/>
|
||||
<fo:table-body font-size="10pt" font-family="sans-serif">
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">A) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">What is FOP?</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">B) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Downloading FOP</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">C) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Running FOP</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">D) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Embedding FOP </fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">E) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">What's Implemented?</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">F) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Limitations</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">G) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Bugs</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">H) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Compiling FOP</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">I) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Getting involved</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">J) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">FOP Relevant Specifications</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row line-height="12pt">
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="end">K) </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block text-align="start">Licence</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,33 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:circle cx="50" cy="30" r="30" style="fill:blue;"/>
|
||||
<svg:circle cx="100" cy="30" r="20" fill="none" stroke="red" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:rect x="10" y="10" width="80" height="40" fill="blue"/>
|
||||
<svg:rect x="100" y="10" width="80" height="40" fill="none" stroke="green" rx="10"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:ellipse cx="50" cy="50" rx="20" ry="10" fill="none" stroke="red" stroke-width="2"/>
|
||||
<svg:ellipse cx="100" cy="50" rx="20" ry="10" fill="black" stroke="yellow" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:line x1="0" y1="0" x2="50" y2="50" stroke="red" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:polygon points="10,10 50,50 100,10" fill="green" stroke="red" stroke-width="2"/>
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,21 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="100pt" height="100pt" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:circle cx="50pt" cy="50pt" r="30pt" style="fill:blue;"/>
|
||||
</svg:svg>
|
||||
<svg:svg width="100pt" height="100pt" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:circle cx="50pt" cy="50pt" r="30pt" style="fill:green;"/>
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,58 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="50" height="100" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:path d="M 0 0 L 100 0 L 50 100 z" fill="red" stroke="blue" stroke-width="3" />
|
||||
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="210" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:polyline class="Connect" points="100,0 100,100" />
|
||||
<svg:polyline class="Connect" points="250,0 250,200" />
|
||||
<svg:polyline class="Connect" points="400,100 400,200" />
|
||||
|
||||
<svg:path class="SamplePath" d="M100,100 C100,0 250,0 250,100
|
||||
S400,200 400,100" />
|
||||
|
||||
<svg:circle class="EndPoint" cx="100" cy="100" r="10" />
|
||||
<svg:circle class="EndPoint" cx="250" cy="100" r="10" />
|
||||
<svg:circle class="EndPoint" cx="400" cy="100" r="10" />
|
||||
<svg:circle class="CtlPoint" cx="100" cy="0" r="10" />
|
||||
<svg:circle class="CtlPoint" cx="250" cy="0" r="10" />
|
||||
<svg:circle class="CtlPoint" cx="400" cy="200" r="10" />
|
||||
<svg:circle class="AutoCtlPoint" cx="250" cy="200" r="9" />
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="300" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:path d="M200,150 Q250,0 300,150 T350,0"
|
||||
fill="none" stroke="red" stroke-width="5" />
|
||||
<svg:path d="M200,150 L250,0 L300,150
|
||||
L350,300 L400,150"
|
||||
fill="none" stroke="#888888" stroke-width="2" />
|
||||
<svg:g fill="#888888" >
|
||||
<svg:circle cx="250" cy="0" r="5"/>
|
||||
<svg:circle cx="400" cy="150" r="5"/>
|
||||
</svg:g>
|
||||
</svg:svg>
|
||||
<svg:svg width="50" height="50" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:path d="M100,100 h-50 a50,50 0 1,0 50,-50 z"
|
||||
fill="red" stroke="blue" stroke-width="5" />
|
||||
<svg:path d="M90,90 v-50 a50,50 0 0,0 -50,50 z"
|
||||
fill="yellow" stroke="blue" stroke-width="5" />
|
||||
<svg:path d="M100,250 l 50,-25
|
||||
a25,25 -30 0,1 50,-25 l 50,-25
|
||||
a25,50 -30 0,1 50,-25 l 50,-25
|
||||
a25,75 -30 0,1 50,-25 l 50,-25
|
||||
a25,100 -30 0,1 50,-25 l 50,-25"
|
||||
fill="none" stroke="red" stroke-width="5" />
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,52 +0,0 @@
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" >
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="simple">
|
||||
<fo:region-body/>
|
||||
</fo:simple-page-master>
|
||||
</fo:layout-master-set>
|
||||
<fo:page-sequence master-reference="simple">
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
<fo:instream-foreign-object>
|
||||
<svg:svg width="200" height="300" xmlns:svg="http://www.w3.org/2000/svg" >
|
||||
<svg:g fill="none" stroke="black" stroke-width="3" >
|
||||
<!-- Draw the axes of the original coordinate system -->
|
||||
<svg:line x1="0" y1="1.5" x2="400" y2="1.5" />
|
||||
<svg:line x1="1.5" y1="0" x2="1.5" y2="150" />
|
||||
</svg:g>
|
||||
<!-- First, a translate -->
|
||||
<svg:g transform="translate(50,50)">
|
||||
<svg:g fill="none" stroke="red" stroke-width="1" >
|
||||
<svg:line x1="0" y1="0" x2="5" y2="0" />
|
||||
<svg:line x1="0" y1="0" x2="0" y2="5" />
|
||||
</svg:g>
|
||||
<svg:text x="0" y="0" font-size="16" font-family="Verdana" >
|
||||
....Translate(1)
|
||||
</svg:text>
|
||||
<!-- Second, a rotate -->
|
||||
<svg:g transform="rotate(-45)">
|
||||
<svg:g fill="none" stroke="green" stroke-width="1" >
|
||||
<svg:line x1="0" y1="0" x2="5" y2="0" />
|
||||
<svg:line x1="0" y1="0" x2="0" y2="5" />
|
||||
</svg:g>
|
||||
<svg:text x="0" y="0" font-size="16" font-family="Verdana" >
|
||||
....Rotate(2)
|
||||
</svg:text>
|
||||
<!-- Third, another translate -->
|
||||
<svg:g transform="translate(20,20)">
|
||||
<svg:g fill="none" stroke="blue" stroke-width="1" >
|
||||
<svg:line x1="0" y1="0" x2="5" y2="0" />
|
||||
<svg:line x1="0" y1="0" x2="0" y2="5" />
|
||||
</svg:g>
|
||||
<svg:text x="0" y="0" font-size="16" font-family="Verdana" >
|
||||
....Translate(3)
|
||||
</svg:text>
|
||||
</svg:g>
|
||||
</svg:g>
|
||||
</svg:g>
|
||||
</svg:svg>
|
||||
</fo:instream-foreign-object>
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,70 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<fo:page-sequence>
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
dasdsad dfsfsdfsf fdsfdsfs fsd fsd f sdfsd fsdfsdf sdfsdf dsafsdfs dfsdf sdfsd fsdfsdf sdfs dfsdfsd fsdfs dfsed
|
||||
</fo:block>
|
||||
<fo:block>
|
||||
xxxxxxxx
|
||||
</fo:block>
|
||||
<fo:table-and-caption>
|
||||
<fo:table>
|
||||
<fo:table-column column-width="25mm"/>
|
||||
<fo:table-column column-width="25mm"/>
|
||||
|
||||
<fo:table-header>
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block
|
||||
border-top-style="dotted"
|
||||
border-left-style="solid"
|
||||
border-right-style="solid"
|
||||
border-top-color="red"
|
||||
border-left-color="rgb(255,255,0)"
|
||||
font-weight="bold">Car
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block font-weight="bold"
|
||||
border-top-style="dashed"
|
||||
border-top-color="#00ffff"
|
||||
border-right-color="cyan">Price</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-header>
|
||||
|
||||
<fo:table-body>
|
||||
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>Volvo</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block
|
||||
background-color="#cccccc">$50000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>SAAB</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block>$48000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
|
||||
</fo:table>
|
||||
</fo:table-and-caption>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
<fo:page-sequence>
|
||||
<fo:flow flow-name="xsl-region-body">
|
||||
<fo:block>
|
||||
444
|
||||
</fo:block>
|
||||
</fo:flow>
|
||||
</fo:page-sequence>
|
||||
</fo:root>
|
||||
@@ -1,257 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
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.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
$max_line_height_for_that_row=0;
|
||||
$max_line_height_for_that_cell=0;
|
||||
|
||||
class FO_Block extends FO_LayoutObject{
|
||||
|
||||
static $CHILDNODES = array(
|
||||
//FO_BidiOverride,
|
||||
//FO_Character,
|
||||
'FO_ExternalGraphic', /*oesi - uncomment for ExternalGraphic Support*/
|
||||
'FO_InstreamForeignObject',
|
||||
'FO_Inline',
|
||||
//FO_InlineContainer,
|
||||
//FO_Leader,
|
||||
//FO_PageNumber,
|
||||
//FO_PageNumberCitation,
|
||||
'FO_BasicLink',
|
||||
//FO_MultiToggle,
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_TableAndCaption',
|
||||
'FO_Table',
|
||||
'FO_ListBlock'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function initAttributes(DOMNode $node) {
|
||||
global $height_of_current_row;
|
||||
//echo $node->parentNode->nodeName.'<br>';
|
||||
if($node->parentNode->nodeName!='fo:table-cell')
|
||||
$height_of_current_row=0;
|
||||
$this->initAttribute($node, "text-align");
|
||||
$this->initAttribute($node, "vertical-align");
|
||||
$this->initAttribute($node, "content-width");
|
||||
}
|
||||
|
||||
function processContent($text) {
|
||||
global $max_line_height_for_that_row;
|
||||
global $max_line_height_for_that_cell;
|
||||
$talign = $this->getContext("text-align");
|
||||
//oesi - add attribute vertical-align
|
||||
$valign = $this->getContext("vertical-align");
|
||||
//oesi - add attribute content-width
|
||||
$colwidth = $this->getContext("content-width");
|
||||
switch ($talign) {
|
||||
case "center":
|
||||
$align = "C";
|
||||
break;
|
||||
case "right":
|
||||
$align = "R";
|
||||
break;
|
||||
case "left":
|
||||
$align = "L";
|
||||
default:
|
||||
$align = '';
|
||||
}
|
||||
|
||||
$text = $this->escape($text);
|
||||
|
||||
$x = $this->getContext("x");
|
||||
$x2 = $this->getContext("startx");
|
||||
if (!$x2) {
|
||||
$x2 = $x;
|
||||
}
|
||||
$y = $this->getContext("y");
|
||||
// echo "Draw at:$x:$x2:$y<br>";
|
||||
$pdf = $this->getPdf();
|
||||
$lineHeight = $this->getContext("line-height");
|
||||
|
||||
//oesi - bei vertikaler Zentrierung wird die y koordinate angepasst (Nur bei Tabellen)
|
||||
switch ($valign)
|
||||
{
|
||||
case "center":
|
||||
//Innerhalb der Zeile zentrieren
|
||||
$y = ($y - ($lineHeight - ($pdf->FontSizePt/72*25.4)) / 2);
|
||||
|
||||
//innerhalb der ganzen TabellenZelle zentrieren
|
||||
if($max_line_height_for_that_row>1 && $max_line_height_for_that_row!=$max_line_height_for_that_cell)
|
||||
$y += ($lineHeight/2*($max_line_height_for_that_row-$max_line_height_for_that_cell));
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
//Innerhalb der Zeile zentrieren
|
||||
$y = ($y - ($lineHeight - ($pdf->FontSizePt/72*25.4)) / 2);
|
||||
|
||||
//ans untere ende der TabellenZelle schieben
|
||||
if($max_line_height_for_that_row>1 && $max_line_height_for_that_row!=$max_line_height_for_that_cell)
|
||||
$y += ($lineHeight*($max_line_height_for_that_row-$max_line_height_for_that_cell));
|
||||
break;
|
||||
case "top":
|
||||
//Innerhalb der Zeile zentrieren
|
||||
$y = ($y - ($lineHeight - ($pdf->FontSizePt/72*25.4)) / 2);
|
||||
break;
|
||||
default:
|
||||
//Hier lasse ich die zentrierung in der Zeile weg, weil ich nicht genau weiss, welche folgeschaeden dadurch
|
||||
//verursacht werden. Eigentlich muesste die Zentrierung der Zeile aber immer stattfinden, egal ob vertical-align
|
||||
//gesetzt ist oder nicht.
|
||||
}
|
||||
|
||||
list($width, $height, $nb, $sx, $sy, $lx, $ly) =
|
||||
$pdf->Text2($x2, $y, $text, $align, $lineHeight, $x, $colwidth);
|
||||
|
||||
//echo "Wrote block:$colwidth:$height:$lineHeight:".$pdf->FontSize.":".$pdf->FontSizePt."$text<br>";
|
||||
|
||||
//oesi - wenn die hoehe einer Spalte groesser ist, dann muss der Border
|
||||
//fuer die ganze row groesser gezeichnet werden.
|
||||
//berechnung von max_line_heigth_for_that_row in fo_layout.php
|
||||
if($max_line_height_for_that_row!=0 && $max_line_height_for_that_row!=1)
|
||||
{
|
||||
//echo "aendere hoehe fuer $text : $max_line_height_for_that_row<br>";
|
||||
$height=$lineHeight*$max_line_height_for_that_row;
|
||||
}
|
||||
else
|
||||
{
|
||||
//echo "<br>$text : $max_line_height_for_that_row";
|
||||
}
|
||||
$this->setLocalContext("content_height", $height);
|
||||
$this->setLocalContext("content_width", $width);
|
||||
$this->setLocalContext("lx", $lx);
|
||||
$this->setLocalContext("ly", $ly);
|
||||
$this->setLocalContext("sx", $sx);
|
||||
$this->setLocalContext("sy", $sy);
|
||||
}
|
||||
|
||||
function postParseContent($content) {
|
||||
$this->setContext("startx", $this->getContext("lx"));
|
||||
$this->setContext("y", $this->getContext("ly"));
|
||||
$pdf = $this->getPdf();
|
||||
$this->setLocalContext("width", $pdf->GetPageWidth());
|
||||
$h1 = $this->getContext("height");
|
||||
$h2 = $this->getContext("content_height");
|
||||
if ($h2 > $h1) {
|
||||
$this->setLocalContext("height", $h2);
|
||||
}
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
if (!$obj instanceof FO_Inline) {
|
||||
return parent::postParse($obj);
|
||||
}
|
||||
$this->setContext("startx", $obj->getContext("lx"));
|
||||
$this->setContext("y", $obj->getContext("ly"));
|
||||
$this->setContext("x", $obj->getContext("x"));
|
||||
$h1 = $this->getContext("height");
|
||||
$h2 = $obj->getContext("height");
|
||||
if ($h2 > $h1) {
|
||||
$this->setLocalContext("height", $h2);
|
||||
}
|
||||
}
|
||||
|
||||
function escape($text) {
|
||||
return str_replace('\t', '', preg_replace('/\s+/', ' ', $text));
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Inline extends FO_Block {
|
||||
|
||||
function processContent($text) {
|
||||
// echo "show inline content:$text<br>";
|
||||
return parent::processContent($text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class FO_BasicLink extends FO_Block {
|
||||
function initAttributes(DOMNode $node) {
|
||||
$this->initLocalAttribute($node, "internal-destination");
|
||||
$this->initLocalAttribute($node, "external-destination");
|
||||
}
|
||||
|
||||
function processContent($text) {
|
||||
parent::processContent($text);
|
||||
$width = $this->getContext("content_width");
|
||||
$height = $this->getContext("content_height");
|
||||
$lx = $this->getContext("lx");
|
||||
$ly = $this->getContext("ly");
|
||||
$x = $this->getContext("x");
|
||||
$y = $this->getContext("y");
|
||||
$sx = $this->getContext("sx");
|
||||
$sy = $this->getContext("sy");
|
||||
//echo "Link at:$x:$y:$width:$height<br>";
|
||||
$pdf = $this->getPdf();
|
||||
$internal = $this->getContext("internal-destination");
|
||||
$external = $this->getContext("external-destination");
|
||||
if ($internal) {
|
||||
$lnk = $pdf->AddLink();
|
||||
$ref = $this->getReference($internal);
|
||||
if ($ref) {
|
||||
//TODO: add all references from id's as well as the page-number
|
||||
$pdf->SetLink($lnk, $ref->getContext("y"), $ref->getContext("page-number"));
|
||||
$pdf->Link($x, $y, $width, $height, $lnk);
|
||||
}
|
||||
}
|
||||
else if ($external) {
|
||||
$pdf->Link($x, $y, $width, $height, $external);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//oesi - add ExternalGraphics
|
||||
class FO_ExternalGraphic extends FO_Block
|
||||
{
|
||||
function initAttributes(DOMNode $node)
|
||||
{
|
||||
$this->initLocalAttribute($node, "src");
|
||||
$this->initLocalAttribute($node, "width");
|
||||
$this->initLocalAttribute($node, "height");
|
||||
$this->initLocalAttribute($node, "posx");
|
||||
$this->initLocalAttribute($node, "posy");
|
||||
}
|
||||
|
||||
function processContent($text)
|
||||
{
|
||||
parent::processContent($text);
|
||||
|
||||
$pdf = $this->getPdf();
|
||||
|
||||
$src = trim($this->getContext("src"));
|
||||
$width = $this->getContext("width");
|
||||
$height = $this->getContext("height");
|
||||
$x = $this->getContext("posx");
|
||||
$y = $this->getContext("posy");
|
||||
if($x=='')
|
||||
$x = $this->getContext("x")+1;
|
||||
if($y=='')
|
||||
$y = $this->getContext("y")+1;
|
||||
$pdf->Image($src, $x, $y, $width, $height, "jpg","");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,375 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
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.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class FO_Container {
|
||||
var $_refs = array();
|
||||
|
||||
function addReference($category, $name, $ref) {
|
||||
$_refs[$category][$name] = $ref;
|
||||
}
|
||||
|
||||
function resolveReference($category, $name) {
|
||||
return (isset($_refs)?$_refs[$category][$name]:'');
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Context {
|
||||
var $_context;
|
||||
|
||||
function __contruct() {
|
||||
$this->_context = array();
|
||||
}
|
||||
|
||||
function get($key) {
|
||||
if(isset($this->_context[$key]))
|
||||
return $this->_context[$key];
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function set($key, $val) {
|
||||
$this->_context[$key] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
abstract class FO_Object {
|
||||
var $_children;
|
||||
var $_container;
|
||||
var $_context;
|
||||
var $_localContext;
|
||||
var $_pdf;
|
||||
var $_parent;
|
||||
|
||||
const NODE_TYPE_ELEMENT = 1;
|
||||
const NODE_TYPE_TEXT = 3;
|
||||
|
||||
function __construct(FO_Container $container, FPDF $pdf,
|
||||
FO_Context $context) {
|
||||
//echo "New:$this:$context<br>";
|
||||
$this->_container = $container;
|
||||
$this->_pdf = $pdf;
|
||||
$this->_context = $context;
|
||||
$this->_localContext = new FO_Context();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check unit of value and scale to internal value, if needed
|
||||
* Internal values are stored in mm
|
||||
**/
|
||||
function calcInternalValue($value, $to = "mm", $from="mm") {
|
||||
sscanf($value, "%f%s", $value, $unit);
|
||||
if (!$unit) {
|
||||
$unit = $from;
|
||||
}
|
||||
//calculate to default value in mm
|
||||
switch ($to) {
|
||||
case "mm":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value;
|
||||
case "cm":
|
||||
return $value*10;
|
||||
case "in":
|
||||
return $value/25.4;
|
||||
case "pt":
|
||||
return $value*25.4/72;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
case "cm":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value/10;
|
||||
case "cm":
|
||||
return $value;
|
||||
case "in":
|
||||
return $value/2.54;
|
||||
case "pt":
|
||||
return $value*2.54/72;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
case "in":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value*25.4;
|
||||
case "cm":
|
||||
return $value*2.54;
|
||||
case "in":
|
||||
return $value;
|
||||
case "pt":
|
||||
return $value*72;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
case "pt":
|
||||
switch ($unit) {
|
||||
case "mm":
|
||||
return $value*72/25.4;
|
||||
case "cm":
|
||||
return $value*72/2.54;
|
||||
case "in":
|
||||
return $value/72;
|
||||
case "pt":
|
||||
return $value;
|
||||
default:
|
||||
$this->NotYetSupported("Unit:$unit");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->NotYetSupported("Default Unit:$default");
|
||||
}
|
||||
}
|
||||
|
||||
function addReference($category, $name) {
|
||||
if ($category && $name) {
|
||||
$this->_container->addReference($category, $name, $this);
|
||||
}
|
||||
}
|
||||
|
||||
function resolveReference($category, $name) {
|
||||
return $this->_container->resolveReference($category, $name);
|
||||
}
|
||||
|
||||
function setParent($parent) {
|
||||
$this->_parent = $parent;
|
||||
}
|
||||
|
||||
function handleEvent($event) {
|
||||
if ($event == "sync-position") {
|
||||
$pdf = $this->getPdf();
|
||||
$this->setContext("y", $pdf->GetY());
|
||||
$this->setContext("x", $pdf->GetX());
|
||||
}
|
||||
if ($this->_parent) {
|
||||
$this->_parent->handleEvent($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get from current context informations
|
||||
*/
|
||||
function getContext($key) {
|
||||
$val = $this->_localContext->get($key);
|
||||
if (!$val) {
|
||||
$val = $this->_context->get($key);
|
||||
}
|
||||
return $val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a context information for child nodes and current node as well
|
||||
*/
|
||||
function setContext($key, $value) {
|
||||
$this->_context->set($key, $value);
|
||||
}
|
||||
|
||||
function setLocalContext($key, $value) {
|
||||
$this->_localContext->set($key, $value);
|
||||
}
|
||||
|
||||
function getAttribute(DOMNode $node, $key) {
|
||||
if($node->attributes->getNamedItem($key)!=null)
|
||||
return $node->attributes->getNamedItem($key)->nodeValue;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function getSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm") {
|
||||
if($node->attributes->getNamedItem($key)!=null)
|
||||
$val = $node->attributes->getNamedItem($key)->nodeValue;
|
||||
else
|
||||
$val=false;
|
||||
return $this->calcInternalValue($val, $to, $from);
|
||||
}
|
||||
|
||||
function initSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm") {
|
||||
$val = $this->getSizeAttribute($node, $key, $to, $from);
|
||||
if ($val) {
|
||||
$this->setContext($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function initAttribute(DOMNode $node, $key) {
|
||||
$val = $this->getAttribute($node, $key);
|
||||
if ($val) {
|
||||
$this->setContext($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function initLocalSizeAttribute(DOMNode $node, $key, $to="mm", $from="mm"){
|
||||
$val = $this->getSizeAttribute($node, $key, $to, $from);
|
||||
if ($val) {
|
||||
$this->_localContext->set($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function initLocalAttribute(DOMNode $node, $key) {
|
||||
$val = $this->getAttribute($node, $key);
|
||||
if ($val) {
|
||||
$this->_localContext->set($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
function processChildNodes(DOMNode $node, $filter) {
|
||||
foreach($node->childNodes as $child) {
|
||||
$this->processChildNode($child, $filter);
|
||||
}
|
||||
}
|
||||
|
||||
function processChildNode(DOMNode $node, $filter) {
|
||||
$subcontext = clone $this->_context;
|
||||
$next =
|
||||
FO_Factory::createFOObject($node, $this->_container,
|
||||
$this->_pdf, $subcontext, $filter);
|
||||
if ($next != null) {
|
||||
$next->setParent($this);
|
||||
$this->initFOObject($next);
|
||||
$this->_children[$node->nodeName] = $next;
|
||||
$this->preParse($next);
|
||||
$next->parse($node);
|
||||
$this->postParse($next);
|
||||
}
|
||||
}
|
||||
|
||||
function initFOObject(FO_Object $obj) {
|
||||
}
|
||||
|
||||
function preParse(FO_Object $obj) {
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
}
|
||||
|
||||
function processContents(DOMNode $node) {
|
||||
foreach($node->childNodes as $child) {
|
||||
if ($child->nodeType == self::NODE_TYPE_TEXT) {
|
||||
$this->processContent($child->textContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function processContent($content) {
|
||||
//do nothing per default
|
||||
}
|
||||
|
||||
function getPdf() {
|
||||
return $this->_pdf;
|
||||
}
|
||||
|
||||
function NotYetSupported($msg=0) {
|
||||
echo "Not Yet Supported[".get_class($this)."]:$msg<br>";
|
||||
}
|
||||
|
||||
function children() {
|
||||
return $this->_children;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the color from either xml attribute value or FPDF
|
||||
* internal representation
|
||||
**/
|
||||
function parseColor($color) {
|
||||
if (sscanf($color, "#%2x%2x%2x", $r, $g, $b) == 3) {
|
||||
//parse RGB color
|
||||
$r = sprintf("%d", $r);
|
||||
$g = sprintf("%d", $g);
|
||||
$b = sprintf("%d", $b);
|
||||
}
|
||||
else if(sscanf($color, "rgb(%d,%d,%d)", $r, $g, $b) == 3) {
|
||||
}
|
||||
else if (sscanf($color, "%f %f %f RG", $r, $g, $b) == 3) {
|
||||
}
|
||||
else if (sscanf($color, "%f G", $g) == 1) {
|
||||
}
|
||||
else {
|
||||
//get color from word
|
||||
switch ($color) {
|
||||
case "white":
|
||||
$r=255; $g=255; $b=255;
|
||||
break;
|
||||
case "red":
|
||||
$r=255; $g=0; $b=0;
|
||||
break;
|
||||
case "green":
|
||||
$r=0; $g=255; $b=0;
|
||||
break;
|
||||
case "blue":
|
||||
$r=0; $g=0; $b=255;
|
||||
break;
|
||||
case "yellow":
|
||||
$r=255; $g=255; $b=0;
|
||||
break;
|
||||
case "magenta":
|
||||
$r=0; $g=255; $b=255;
|
||||
break;
|
||||
case "cyan":
|
||||
$r=255; $g=0; $b=255;
|
||||
break;
|
||||
case "black":
|
||||
default:
|
||||
$r=0; $g=0; $b=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return array($r, $g, $b);
|
||||
}
|
||||
|
||||
function parse(DOMNode $node)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
* <!-- The full XSL-FO document goes here -->
|
||||
* </fo:root>
|
||||
*/
|
||||
class FO_Root extends FO_Object{
|
||||
|
||||
function __construct(FPDF $pdf) {
|
||||
$container = new FO_Context();
|
||||
parent::__construct(new FO_Container(), $pdf, $container);
|
||||
$this->setContext("acceptPageBreak", true);
|
||||
}
|
||||
|
||||
static $CHILDNODES = array (
|
||||
'FO_LayoutMasterSet',
|
||||
'FO_PageSequence'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
//no attrbutes which concerns us
|
||||
$_children[$node->nodeName] =
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
|
||||
function setContext($key, $value) {
|
||||
parent::setContext($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,44 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
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.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
require_once("fo_svg.php");
|
||||
class FO_InstreamForeignObject extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_SVG'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
//echo "Post:".$this->getContext("y")."<br>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,726 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
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.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
|
||||
class FO_LayoutObject extends FO_FlowContainer {
|
||||
var $_oldFont;
|
||||
var $_oldFontStyle;
|
||||
var $_oldColor;
|
||||
var $_buffer;
|
||||
|
||||
function initDefaultAttributes($node) {
|
||||
//read attributes
|
||||
$this->initLocalAttribute($node, "border-top-style");
|
||||
$this->initLocalAttribute($node, "border-right-style");
|
||||
$this->initLocalAttribute($node, "border-bottom-style");
|
||||
$this->initLocalAttribute($node, "border-left-style");
|
||||
$this->initLocalAttribute($node, "border-style");
|
||||
$this->initLocalAttribute($node, "border-top-color");
|
||||
$this->initLocalAttribute($node, "border-right-color");
|
||||
$this->initLocalAttribute($node, "border-bottom-color");
|
||||
$this->initLocalAttribute($node, "border-left-color");
|
||||
$this->initLocalAttribute($node, "border-color");
|
||||
$this->initLocalSizeAttribute($node, "border-top-width");
|
||||
$this->initLocalSizeAttribute($node, "border-right-width");
|
||||
$this->initLocalSizeAttribute($node, "border-bottom-width");
|
||||
$this->initLocalSizeAttribute($node, "border-left-width");
|
||||
$this->initLocalSizeAttribute($node, "border-width");
|
||||
$this->initAttribute($node, "font-style");
|
||||
$this->initAttribute($node, "font-weight");
|
||||
$this->initSizeAttribute($node, "font-size", "pt");
|
||||
$this->initAttribute($node, "font-family");
|
||||
$this->initAttribute($node, "color");
|
||||
$this->initLocalSizeAttribute($node, "width");
|
||||
$this->initLocalSizeAttribute($node, "height");
|
||||
$this->initLocalAttribute($node, "background-color");
|
||||
$this->initLocalAttribute($node, "background-image");
|
||||
$this->initLocalSizeAttribute($node, "space-before.optimum");
|
||||
$this->initLocalSizeAttribute($node, "space-after.optimum");
|
||||
$this->initLocalAttribute($node, "break-before");
|
||||
$this->initLocalAttribute($node, "break-after");
|
||||
$this->initSizeAttribute($node, "line-height");
|
||||
$this->initLocalSizeAttribute($node, "padding-top");
|
||||
//$this->initLocalSizeAttribute($node, "padding-bottom");
|
||||
$this->initLocalSizeAttribute($node, "padding-left");
|
||||
//$this->initLocalSizeAttribute($node, "padding-right");
|
||||
}
|
||||
|
||||
//oesi - convertiert die daten von utf8 nach latin1 und ersetzt 'EURO' durch das eurosymbol
|
||||
function convert($str)
|
||||
{
|
||||
|
||||
$str = str_replace('ĉ','c',$str);
|
||||
$str = str_replace('Č','C',$str);
|
||||
$str = str_replace('č','c',$str);
|
||||
$str = str_replace('ć','c',$str);
|
||||
$str = str_replace('Š','S',$str);
|
||||
$str = str_replace('š','s',$str);
|
||||
$str = str_replace('ň','n',$str);
|
||||
$str = str_replace('ń','n',$str);
|
||||
$str = str_replace('ř','r',$str);
|
||||
$str = utf8_decode($str);
|
||||
//echo str_replace('EURO',chr(128),utf8_decode($str));
|
||||
$str = str_replace('EURO',chr(128),$str);
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
//Spaltenhoehe Berechnen
|
||||
function BerechneZellenHoehe($cell, $anzahl_lines_max)
|
||||
{
|
||||
$pdf = $this->getPdf();
|
||||
$output = '';
|
||||
if($cell->childNodes)
|
||||
{
|
||||
foreach($cell->childNodes as $block)
|
||||
{
|
||||
//Blockelement heraussuchen
|
||||
if($block->nodeName=='fo:block')
|
||||
{
|
||||
//Width des block Elements holen
|
||||
if($block->attributes->getNamedItem('content-width'))
|
||||
{
|
||||
//Schriftgroesse des Elements holen bzw des uebergeordneten
|
||||
if($block->attributes->getNamedItem('font-size'))
|
||||
$font_size=$block->attributes->getNamedItem('font-size')->nodeValue;
|
||||
else
|
||||
$font_size=$this->getContext("font-size");
|
||||
|
||||
//wenn schriftgroesse in pt angegeben ist dann in mm umrechnen
|
||||
if(strstr($font_size,'pt'))
|
||||
$font_size = $font_size/72*25.4;
|
||||
$content_width = $block->attributes->getNamedItem('content-width')->nodeValue;
|
||||
//$output .= $block->nodeValue;
|
||||
|
||||
$anzahl_lines=0;
|
||||
//sonderzeichen konvertieren
|
||||
$line = $this->convert($block->nodeValue);
|
||||
|
||||
//Damit bei den Fussnoten am Zeugnis das Sonderzeichen nicht als 5 Zeichen gezaehlt wird
|
||||
//wird hier einfach das erste Zeichen ersetzt
|
||||
$line = '1'.substr($line, 1);
|
||||
//Zeilenumbrueche loeschen
|
||||
$line = str_replace("\n",'', trim($line));
|
||||
//Lines nach Newlines splitten
|
||||
$lines = explode('\n', $line);
|
||||
foreach ($lines as $line)
|
||||
{
|
||||
if($line!='')
|
||||
{
|
||||
do
|
||||
{
|
||||
/*$x = $this->getContext("x");
|
||||
$x2 = $this->getContext("startx");
|
||||
if (!$x2) {
|
||||
$x2 = $x;
|
||||
}*/
|
||||
//echo "x2:$x2<br>";
|
||||
|
||||
$w = $content_width-1;
|
||||
|
||||
//Anzahl der zeichen holen die in dieser zeile noch platz haben
|
||||
$noc = $pdf->GetNumberOfChars($w, $line, $font_size);
|
||||
//wenn das wort nicht abgeteilt werden kann dann ueber den rand hinausschreiben
|
||||
if($noc==-1)
|
||||
$noc = strlen($line);
|
||||
//Zeile abteilen
|
||||
$showLine = substr($line, 0, $noc);
|
||||
|
||||
$output.= "w=$w noc=$noc fontsize=$font_size<br>$showLine ($line)";
|
||||
|
||||
//$textWidth = $pdf->GetStringWidth($showLine);
|
||||
//Rest der Line als neue Line
|
||||
$line = trim(substr($line, $noc));
|
||||
//Anzahl der verbleibenden zeichen ermitteln
|
||||
$width = strlen($line); //$pdf->GetNumberOfChars($w, $line, $font_size);
|
||||
$anzahl_lines++;
|
||||
} while($width>0);
|
||||
}
|
||||
}
|
||||
$output.= " Breaks $anzahl_lines <br><br>";
|
||||
//Wenn die Anzahl der benoetigten Zeilen in dieser Zelle
|
||||
//Groesser als die bisher groesste ist dann aendern
|
||||
if($anzahl_lines_max<$anzahl_lines)
|
||||
$anzahl_lines_max = $anzahl_lines;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $anzahl_lines_max;
|
||||
}
|
||||
|
||||
//oesi - Bei Tabellen wird die Hoehe der Row im vorhinein berechnet
|
||||
function BerechneTabellenHoehe($child)
|
||||
{
|
||||
global $max_line_height_for_that_row;
|
||||
//var_dump($child);
|
||||
$pdf = $this->getPdf();
|
||||
$anzahl_lines_max=0;
|
||||
$output = '';
|
||||
//alle Zellen durchlaufen
|
||||
foreach($child->childNodes as $cell)
|
||||
{
|
||||
$anzahl_lines_max = $this->BerechneZellenHoehe($cell, $anzahl_lines_max);
|
||||
}
|
||||
//Groesse der Zellen in Globale Variable schreiben
|
||||
$max_line_height_for_that_row = $anzahl_lines_max;
|
||||
//echo $output." - Line breaks $anzahl_lines_max times<br>";
|
||||
}
|
||||
|
||||
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
global $max_line_height_for_that_cell;
|
||||
//set default attributes
|
||||
$this->initDefaultAttributes($node);
|
||||
$this->initAttributes($node);
|
||||
$this->initialize();
|
||||
$acceptPageBreak = $this->getContext("acceptPageBreak");
|
||||
|
||||
$pos = $this->getPosition();
|
||||
list($x, $y, $width, $height) = $pos[0];
|
||||
list($xOrig, $yOrig, $width, $height) = $pos[1];
|
||||
|
||||
//automatic page break if component exceeds page limits
|
||||
$pdf = $this->getPdf();
|
||||
if ($yOrig > $pdf->PageBreakTrigger &&
|
||||
$pdf->AcceptPageBreak() &&
|
||||
$acceptPageBreak) {
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
$this->parse($node);
|
||||
return;
|
||||
}
|
||||
|
||||
//update to inner position
|
||||
$this->setContext("x", $x);
|
||||
$this->setContext("y", $y);
|
||||
|
||||
//draw us
|
||||
$this->setColor();
|
||||
$this->setFont();
|
||||
|
||||
$this->startCapture();
|
||||
foreach($node->childNodes as $child)
|
||||
{
|
||||
if ($child->nodeType == self::NODE_TYPE_TEXT)
|
||||
{
|
||||
$this->preParseContent($child->textContent);
|
||||
//oesi - add function utf8_decode for special chars (umlaut)
|
||||
$this->processContent($this->convert($child->nodeValue));
|
||||
$this->postParseContent($child->textContent);
|
||||
}
|
||||
else
|
||||
{
|
||||
//oesi - Bei Table-rows im vorhinein die hoehe berechnen
|
||||
if($child->nodeName=='fo:table-row')
|
||||
$this->BerechneTabellenHoehe($child);
|
||||
//oesi - Bei Table-cell im vorhinein die hoehe berechnen
|
||||
if($child->nodeName=='fo:table-cell')
|
||||
$max_line_height_for_that_cell = $this->BerechneZellenHoehe($child,0);
|
||||
$this->processChildNode($child, $this->getChildNodes());
|
||||
}
|
||||
}
|
||||
|
||||
//oesi - hack for ExternalGraphic Tag to show without content
|
||||
if($this instanceof FO_ExternalGraphic)
|
||||
$this->processContent('');
|
||||
//endhack
|
||||
|
||||
$contentBuffer = $this->endCapture();
|
||||
|
||||
//update to outer position
|
||||
$this->setContext("x", $xOrig);
|
||||
$this->setContext("y", $yOrig);
|
||||
|
||||
//recalc positions
|
||||
$pos2 = $this->getPosition();
|
||||
//merge with X and y values of the original psoition
|
||||
$pos2[0][0] = $pos[0][0];
|
||||
$pos2[0][1] = $pos[0][1];
|
||||
$pos2[1][0] = $pos[1][0];
|
||||
$pos2[1][1] = $pos[1][1];
|
||||
|
||||
//automatic page break if component exceeds page limits
|
||||
$pdf = $this->getPdf();
|
||||
if ($pos2[1][3] < $pdf->PageBreakTrigger &&
|
||||
$pos2[1][3]+$this->getContext("y") > $pdf->PageBreakTrigger &&
|
||||
$pdf->AcceptPageBreak() && $acceptPageBreak) {
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
$this->parse($node);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->drawBordersAndBackground($pos2);
|
||||
|
||||
//update to outer positions
|
||||
$this->setLocalContext("width", $pos2[1][2]);
|
||||
$this->setLocalContext("height", $pos2[1][3]);
|
||||
|
||||
//append child buffer
|
||||
$this->appendBuffer($contentBuffer);
|
||||
|
||||
$this->closeDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize additional attributes
|
||||
**/
|
||||
function initAttributes(DOMNode $node) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
function preParseContent($content) {
|
||||
}
|
||||
|
||||
function postParseContent($textcontent) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw borders and backgrounds according to the positions
|
||||
* May be overwritten to specify behaviour
|
||||
*/
|
||||
function drawBordersAndBackground($pos) {
|
||||
list($x, $y, $width, $height) = $pos[1];
|
||||
$this->drawBackground($x, $y, $width, $height);
|
||||
$this->drawBorders($x, $y, $width, $height);
|
||||
}
|
||||
|
||||
function getChildNodes() {
|
||||
//no child nodes per default
|
||||
return array();
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
$break_before = $this->getContext("break-before");
|
||||
$this->handleBreak($break_before);
|
||||
}
|
||||
|
||||
function closeDown() {
|
||||
$pdf = $this->getPdf();
|
||||
if ($this->_oldFont) {
|
||||
$pdf->SetFont($this->_oldFont, $this->_oldFontStyle,
|
||||
$this->_oldFontSize);
|
||||
}
|
||||
else if ($this->_oldFontSize) {
|
||||
$pdf->SetFontSize($this->oldFontSize);
|
||||
}
|
||||
|
||||
if ($this->_oldColor) {
|
||||
$this->setTextColor($this->_oldColor, $pdf);
|
||||
}
|
||||
|
||||
$space_after = $this->getContext("space-after.optimum");
|
||||
// echo "Space-after:".$space_after.":".get_class($this).":".$this->getContext("height")."<br>";
|
||||
if ($space_after) {
|
||||
$this->setLocalContext("height", $this->getContext("height") +
|
||||
$space_after);
|
||||
}
|
||||
$break_after = $this->getContext("break-after");
|
||||
$this->handleBreak($break_after);
|
||||
}
|
||||
|
||||
function startCapture() {
|
||||
if ($this->_buffer) {
|
||||
echo "Already captureing<br>";
|
||||
return;
|
||||
}
|
||||
$this->_buffer = $this->getPdf()->startCapture();
|
||||
}
|
||||
|
||||
function endCapture() {
|
||||
if (!$this->_buffer) {
|
||||
return;
|
||||
}
|
||||
$partBuffer = $this->getPdf()->endCapture($this->_buffer);
|
||||
$this->_buffer = NULL;
|
||||
return $partBuffer;
|
||||
}
|
||||
|
||||
function appendBuffer($buffer) {
|
||||
if (!$buffer) {
|
||||
//echo "Nothing to append<br>";
|
||||
return;
|
||||
}
|
||||
$this->getPdf()->appendBuffer($buffer);
|
||||
}
|
||||
|
||||
function getPosition() {
|
||||
$space_before = $this->getContext("space-before.optimum");
|
||||
$height = $this->getContext("line-height");
|
||||
$pdf = $this->getPdf();
|
||||
|
||||
$bw_top = $this->getContext("border-top-width");
|
||||
$bw_left = $this->getContext("border-left-width");
|
||||
$bw_right = $this->getContext("border-right-width");
|
||||
$bw_bottom = $this->getContext("border-bottom-width");
|
||||
$padding_left = $this->getContext("padding-left");
|
||||
$padding_top = $this->getContext("padding-top");
|
||||
|
||||
$bw = $this->getContext("border-width");
|
||||
$xx = $this->getContext("x");
|
||||
$yy = $this->getContext("y");
|
||||
|
||||
$height2 = $this->getContext("height");
|
||||
if (!$height || $height < $height2) {
|
||||
$height = $height2;
|
||||
}
|
||||
$width = $this->getContext("width");
|
||||
if (!$bw_top) {$bw_top = $bw;}
|
||||
if (!$bw_bottom) {$bw_bottom = $bw;}
|
||||
if (!$bw_right) {$bw_right = $bw;}
|
||||
if (!$bw_left) {$bw_left = $bw;}
|
||||
|
||||
sscanf($bw_top, "%f%s", $wt, $unit);
|
||||
sscanf($bw_left, "%f%s", $wl, $unit);
|
||||
sscanf($bw_right, "%f%s", $wr, $unit);
|
||||
sscanf($bw_bottom, "%f%s", $wb, $unit);
|
||||
$xx += $wl;
|
||||
$yy += $wt;
|
||||
$height += $wt+$wb;
|
||||
$width += $wl+$wr;
|
||||
|
||||
if ($space_before) {
|
||||
//echo "Spacebefore:$space_before<br>";
|
||||
$yy += $space_before;
|
||||
$height += $space_before;
|
||||
}
|
||||
if ($padding_left) {
|
||||
$xx += $padding_left;
|
||||
}
|
||||
if ($padding_top) {
|
||||
$yy += $padding_top;
|
||||
}
|
||||
|
||||
return
|
||||
array(
|
||||
//inner coordinates
|
||||
array($xx, $yy, $width-$wl-$wr, $height-$wt-$wb),
|
||||
//outer coordinates
|
||||
array($xx-$wl, $yy-$wr, $width, $height));
|
||||
}
|
||||
|
||||
function setColor() {
|
||||
$pdf = $this->getPdf();
|
||||
$this->_oldColor = $pdf->GetTextColor();
|
||||
$color = $this->getContext("color");
|
||||
if ($color) {
|
||||
$this->setTextColor($color, $pdf);
|
||||
}
|
||||
}
|
||||
|
||||
function setFont() {
|
||||
$pdf = $this->getPdf();
|
||||
$this->_oldFont = $pdf->GetFontFamily();
|
||||
$this->_oldFontStyle = $pdf->GetFontStyle();
|
||||
$this->_oldFontSize = $pdf->GetFontSizePt();
|
||||
$weight = $this->getContext("font-weight");
|
||||
$style = $this->getContext("font-style");
|
||||
$family = $this->getContext("font-family");
|
||||
$size = $this->getContext("font-size");
|
||||
if ($family) {
|
||||
$f = $family;
|
||||
}
|
||||
else {
|
||||
$f = $this->_oldFont;
|
||||
}
|
||||
if ($weight || $style) {
|
||||
if ($weight) {
|
||||
$st = "B";
|
||||
}
|
||||
if ($style) {
|
||||
//TODO: check which styles are supported
|
||||
}
|
||||
}
|
||||
else {
|
||||
$st = $this->_oldFontStyle;
|
||||
}
|
||||
if ($size) {
|
||||
$sz = $size;
|
||||
}
|
||||
else {
|
||||
$sz = $this->_oldFontSize;
|
||||
}
|
||||
if ($pdf->FontExists($f, $st)) {
|
||||
$pdf->SetFont($f, $st, $sz);
|
||||
}
|
||||
else if ($pdf->FontExists($this->_oldFont, $st)) {
|
||||
$pdf->SetFont($this->_oldFont, $st, $sz);
|
||||
}
|
||||
else {
|
||||
//adjust only size
|
||||
$pdf->SetFontSize($sz);
|
||||
}
|
||||
}
|
||||
|
||||
function drawBorders($x, $y, $width, $height) {
|
||||
$bs_top = $this->getContext("border-top-style");
|
||||
$bs_left = $this->getContext("border-left-style");
|
||||
$bs_right = $this->getContext("border-right-style");
|
||||
$bs_bottom = $this->getContext("border-bottom-style");
|
||||
$bs = $this->getContext("border-style");
|
||||
$bc_top = $this->getContext("border-top-color");
|
||||
$bc_left = $this->getContext("border-left-color");
|
||||
$bc_right = $this->getContext("border-right-color");
|
||||
$bc_bottom = $this->getContext("border-bottom-color");
|
||||
$bc = $this->getContext("border-color");
|
||||
$bw_top = $this->getContext("border-top-width");
|
||||
$bw_left = $this->getContext("border-left-width");
|
||||
$bw_right = $this->getContext("border-right-width");
|
||||
$bw_bottom = $this->getContext("border-bottom-width");
|
||||
$bw = $this->getContext("border-width");
|
||||
|
||||
$pdf = $this->getPdf();
|
||||
if (!$bs_top) {$bs_top = $bs;}
|
||||
if (!$bs_bottom) {$bs_bottom = $bs;}
|
||||
if (!$bs_right) {$bs_right = $bs;}
|
||||
if (!$bs_left) {$bs_left = $bs;}
|
||||
if (!$bc_top) {$bc_top = $bc;}
|
||||
if (!$bc_bottom) {$bc_bottom = $bc;}
|
||||
if (!$bc_right) {$bc_right = $bc;}
|
||||
if (!$bc_left) {$bc_left = $bc;}
|
||||
if (!$bw_top) {$bw_top = $bw;}
|
||||
if (!$bw_bottom) {$bw_bottom = $bw;}
|
||||
if (!$bw_right) {$bw_right = $bw;}
|
||||
if (!$bw_left) {$bw_left = $bw;}
|
||||
|
||||
sscanf($bw_top, "%f%s", $wt, $unit);
|
||||
sscanf($bw_left, "%f%s", $wl, $unit);
|
||||
sscanf($bw_right, "%f%s", $wr, $unit);
|
||||
sscanf($bw_bottom, "%f%s", $wb, $unit);
|
||||
$wt /= 2;
|
||||
$wl /= 2;
|
||||
$wr /= 2;
|
||||
$wb /= 2;
|
||||
|
||||
$width -= $wl+$wr;
|
||||
$height -= $wt+$wb;
|
||||
$x += $wl;
|
||||
$y += $wt;
|
||||
$this->drawLine($x, $y, $x+$width, $y, $bs_top, $bc_top,
|
||||
$bw_top, $pdf);
|
||||
$this->drawLine($x, $y, $x, $y+$height, $bs_left,
|
||||
$bc_left, $bw_left,$pdf);
|
||||
$this->drawLine($x, $y+$height, $x+$width, $y+$height,
|
||||
$bs_bottom, $bc_bottom, $bw_bottom, $pdf);
|
||||
$this->drawLine($x+$width, $y, $x+$width, $y+$height,
|
||||
$bs_right, $bc_right,$bw_right, $pdf);
|
||||
}
|
||||
|
||||
function drawBackground($x, $y, $width, $height) {
|
||||
$pdf = $this->GetPdf();
|
||||
$bg_c = $this->getContext("background-color");
|
||||
$bg_img = $this->getContext("background-image");
|
||||
if ($bg_c) {
|
||||
$oldColor = $pdf->GetFillColor();
|
||||
list($r, $g, $b) = $this->parseColor($bg_c);
|
||||
$pdf->SetFillColor($r, $g, $b);
|
||||
$pdf->Rect($x, $y, $width, $height, "F");
|
||||
list($r, $g, $b) = $this->parseColor($oldColor);
|
||||
$pdf->SetFillColor($r, $g, $b);
|
||||
}
|
||||
else if ($bg_img) {
|
||||
$this->NotYetSupported("background-image");
|
||||
}
|
||||
}
|
||||
|
||||
function drawLine($x, $y, $x2, $y2, $style, $color, $width, &$pdf) {
|
||||
$oldColor = $pdf->GetDrawColor();
|
||||
$oldLineWidth = $pdf->GetLineWidth();
|
||||
if ($width) {
|
||||
$pdf->SetLineWidth($width);
|
||||
}
|
||||
$this->setDrawColor($color, $pdf);
|
||||
switch ($style) {
|
||||
case "dotted":
|
||||
$pdf->SetDash(0.5, 0.5); //1mm on, 1mm off
|
||||
$pdf->Line($x, $y, $x2, $y2);
|
||||
$pdf->SetDash(); //restore no dash
|
||||
return;
|
||||
case "dashed":
|
||||
$pdf->SetDash(2,2); //2mm on, 2mm off
|
||||
$pdf->Line($x, $y, $x2, $y2);
|
||||
$pdf->SetDash(); //restore no dash
|
||||
return;
|
||||
case "solid":
|
||||
$pdf->Line($x, $y, $x2, $y2);
|
||||
return;
|
||||
case "double":
|
||||
case "groove":
|
||||
case "ridge":
|
||||
case "inset":
|
||||
case "outset":
|
||||
//TODO:implement
|
||||
echo "border style '$style' not yet supported<br>";
|
||||
case "none":
|
||||
case "hidden":
|
||||
default:
|
||||
//do nothing
|
||||
return;
|
||||
}
|
||||
$this->setDrawColor($oldColor, $pdf);
|
||||
$this->setLineWidth($oldLineWidth);
|
||||
}
|
||||
|
||||
function setDrawColor($color, &$pdf) {
|
||||
if ($color == '') {
|
||||
return;
|
||||
}
|
||||
list($r, $g, $b) = $this->parseColor($color);
|
||||
$pdf->SetDrawColor($r, $g, $b);
|
||||
}
|
||||
|
||||
function setTextColor($color, &$pdf) {
|
||||
if ($color == '') {
|
||||
return;
|
||||
}
|
||||
list($r, $g, $b) = $this->parseColor($color);
|
||||
$pdf->SetTextColor($r, $g, $b);
|
||||
}
|
||||
|
||||
function handleBreak($break) {
|
||||
if (!$break) {
|
||||
return;
|
||||
}
|
||||
$pdf = $this->getPdf();
|
||||
switch($break) {
|
||||
case "page":
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
return;
|
||||
default:
|
||||
$this->NotYetSupported("Break:$break");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_LayoutMasterSet extends FO_Object {
|
||||
var $name;
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->name = $node->attributes->getNamedItem("master-name");
|
||||
$this->addReference($this, $this->name);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_PageSequence extends FO_Object {
|
||||
static $CHILDNODES = array(
|
||||
'FO_Flow'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$masterRef = $node->attributes->getNamedItem("master-reference");
|
||||
if ($masterRef) {
|
||||
$master = $this->resolveReference('FO_LayoutMasterSet', $masterRef);
|
||||
//TODO: do something with this master
|
||||
}
|
||||
$pdf = $this->getPdf();
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_FlowContainer extends FO_Object {
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
$acceptPageBreak = $this->getContext("acceptPageBreak");
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$height = $this->getContext("height")+$obj->getContext("height");
|
||||
$this->setLocalContext("height", $height);
|
||||
$y = $this->getContext("y")+$obj->getContext("height");
|
||||
$pdf = $this->getPdf();
|
||||
if ($height < $pdf->PageBreakTrigger &&
|
||||
$y > $pdf->PageBreakTrigger &&
|
||||
$pdf->AcceptPageBreak() &&
|
||||
$acceptPageBreak) {
|
||||
|
||||
$pdf->AddPage();
|
||||
$this->handleEvent("sync-position");
|
||||
//echo "Page break on .".get_class($obj)."<br>";
|
||||
}
|
||||
else {
|
||||
$this->setContext("y", $y);
|
||||
//echo "Move :".get_class($obj).":".$y.":".$obj->getContext("height")."<br>;";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Flow extends FO_FlowContainer {
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_Table',
|
||||
'FO_BlockContainer',
|
||||
'FO_TableAndCaption',
|
||||
'FO_ListBlock'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
//TODO: use attributes
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_BlockContainer extends FO_LayoutObject {
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_TableAndCaption',
|
||||
'FO_Table',
|
||||
'FO_ListBlock');
|
||||
|
||||
function initAttributes(DOMNode $node) {
|
||||
$this->initLocalSizeAttribute($node, "position");
|
||||
$this->initLocalSizeAttribute($node, "top");
|
||||
$this->initLocalSizeAttribute($node, "left");
|
||||
$this->initLocalSizeAttribute($node, "height");
|
||||
$this->initLocalSizeAttribute($node, "width");
|
||||
}
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->initAttributes($node);
|
||||
$position = $this->getContext("position");
|
||||
if ($position == "absolute"){
|
||||
//init absolute positions
|
||||
$top = $this->getContext("top");
|
||||
$left = $this->getContext("left");
|
||||
$this->setContext("x", $left);
|
||||
$this->setContext("y", $top);
|
||||
$this->setContext("acceptPageBreak", false);
|
||||
}
|
||||
parent::parse($node);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class FO_ListBlock extends FO_LayoutObject {
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,155 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
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.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
class SVG_Object extends FO_Object {
|
||||
function initLocalStyleAttribute(DOMNode $node) {
|
||||
$st = $this->getAttribute($node, "style");
|
||||
|
||||
$styles = explode(";", $st);
|
||||
foreach ($styles as $style) {
|
||||
$params = explode(":", $style);
|
||||
$this->setLocalContext($params[0], $params[1]);
|
||||
}
|
||||
}
|
||||
|
||||
function initStyleAttribute(DOMNode $node) {
|
||||
$st = $this->getAttribute($node, "style");
|
||||
|
||||
$styles = explode(";", $st);
|
||||
foreach ($styles as $style) {
|
||||
$params = explode(":", $style);
|
||||
$this->setContext($params[0], $params[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SVG_StyleObject extends SVG_Object {
|
||||
|
||||
function initLocalSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
parent::initLocalSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function initSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
parent::initSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function getLocalSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
return parent::getLocalSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function getSizeAttribute(DOMNode $node, $key, $to="mm", $from="pt"){
|
||||
return parent::getSizeAttribute($node, $key, $to, $from);
|
||||
}
|
||||
|
||||
function calcInternalValue($value, $to = "mm", $from="pt") {
|
||||
return parent::calcInternalValue($value, $to, $from);
|
||||
}
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$pdf = $this->getPdf();
|
||||
$buf = $pdf->startCapture();
|
||||
$this->initStyleAttribute($node);
|
||||
$this->initSizeAttribute($node, "x");
|
||||
$this->initSizeAttribute($node, "y");
|
||||
$this->initLocalSizeAttribute($node, "width");
|
||||
$this->initLocalSizeAttribute($node, "height");
|
||||
$this->initAttribute($node, "fill");
|
||||
$this->initAttribute($node, "stroke");
|
||||
$this->initSizeAttribute($node, "stroke-width");
|
||||
|
||||
$fill = $this->getContext("fill");
|
||||
$stroke = $this->getContext("stroke");
|
||||
$strokeWidth = $this->getContext("stroke-width");
|
||||
$sargs = "";
|
||||
$oldFillColor = $pdf->GetFillColor();
|
||||
$oldDrawColor = $pdf->GetDrawColor();
|
||||
$oldLineWidth = $pdf->GetLineWidth();
|
||||
if ($fill == "none") {
|
||||
$fill = NULL;
|
||||
}
|
||||
if ($stroke == "none") {
|
||||
$stroke = NULL;
|
||||
}
|
||||
if ($fill) {
|
||||
list($r, $g, $b) = $this->parseColor($fill);
|
||||
$pdf->setFillColor($r, $g, $b);
|
||||
$sargs .= "F";
|
||||
}
|
||||
if ($stroke) {
|
||||
list($r, $g, $b) = $this->parseColor($stroke);
|
||||
$pdf->setDrawColor($r, $g, $b);
|
||||
$sargs .= "D";
|
||||
}
|
||||
if ($strokeWidth) {
|
||||
$pdf->SetLineWidth($strokeWidth);
|
||||
}
|
||||
|
||||
$this->process($node, $sargs);
|
||||
|
||||
if ($fill) {
|
||||
list($r, $g, $b) = $this->parseColor($oldFillColor);
|
||||
$pdf->setFillColor($r, $g, $b);
|
||||
}
|
||||
if ($stroke) {
|
||||
list($r, $g, $b) = $this->parseColor($oldStrokeColor);
|
||||
$pdf->setDrawColor($r, $g, $b);
|
||||
}
|
||||
if ($strokeWidth) {
|
||||
$pdf->SetLineWidth($oldLineWidth);
|
||||
}
|
||||
$buf = $pdf->endCapture($buf);
|
||||
//echo get_class($this).":$buf<br>";
|
||||
$pdf->appendBuffer($buf);
|
||||
}
|
||||
function process(DOMNode $node, $sargs="")
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
class FO_SVG extends SVG_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
SVG_Circle,
|
||||
SVG_Rect,
|
||||
SVG_Ellipse,
|
||||
SVG_Line,
|
||||
SVG_Polygon,
|
||||
SVG_G,
|
||||
SVG_Text,
|
||||
SVG_Path
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->initLocalSizeAttribute($node, "width", "mm", "pt");
|
||||
$this->initLocalSizeAttribute($node, "height", "mm", "pt");
|
||||
$this->setContext("xOrig", $this->getContext("x"));
|
||||
$this->setContext("yOrig", $this->getContext("y"));
|
||||
$this->setContext("x", 0);
|
||||
$this->setContext("y", 0);
|
||||
$pdf = $this->getPdf();
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
$this->setContext("y", $this->getContext("yOrig")+$this->getContext("height"));
|
||||
$this->setContext("x", $this->getContext("xOrig"));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,281 +0,0 @@
|
||||
<?PHP /*
|
||||
xslfo2pdf
|
||||
Copyright (C) 2005 Tegonal GmbH
|
||||
|
||||
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.
|
||||
|
||||
Contact:
|
||||
mike.toggweiler@tegonal.com
|
||||
http://xslf2pdf.tegonal.com
|
||||
*/ ?>
|
||||
<?PHP
|
||||
/*
|
||||
<fo:table-and-caption>
|
||||
|
||||
<fo:table>
|
||||
|
||||
<fo:table-column column-width="25mm"/>
|
||||
<fo:table-column column-width="25mm"/>
|
||||
|
||||
<fo:table-header>
|
||||
<fo:table-cell>
|
||||
<fo:block font-weight="bold">Car</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block font-weight="bold">Price</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-header>
|
||||
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>Volvo</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block>$50000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell>
|
||||
<fo:block>SAAB</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell>
|
||||
<fo:block>$48000</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
|
||||
</fo:table>
|
||||
|
||||
</fo:table-and-caption>
|
||||
*/
|
||||
?>
|
||||
<?PHP
|
||||
|
||||
class FO_TableAndCaption extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_Table',
|
||||
'FO_TableCaption'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_Table extends FO_LayoutObject {
|
||||
var $colCount = 0;
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableColumn',
|
||||
'FO_TableHeader',
|
||||
'FO_TableFooter',
|
||||
'FO_TableBody'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function initFOObject(FO_Object $col) {
|
||||
if (!$col instanceof FO_TableColumn) {
|
||||
return;
|
||||
}
|
||||
$col->setContext("column", $this->colCount++);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
global $max_line_height_for_that_row;
|
||||
if ($obj instanceof FO_TableHeader) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
}
|
||||
else if($obj instanceof FO_TableBody) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
$max_line_height_for_that_row=1;
|
||||
}
|
||||
else if($obj instanceof FO_TableColumn) {
|
||||
$col = $obj->getContext("column");
|
||||
$this->setContext("column-$col-width", $obj->getContext("width"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableCaption extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_ListBlock'
|
||||
);
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableColumn extends FO_Object {
|
||||
|
||||
static $CHILDNODES = array();
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$width = $this->getSizeAttribute($node, "column-width");
|
||||
//calc internal width
|
||||
$this->setContext("width", $width);
|
||||
$this->processChildNodes($node, self::$CHILDNODES);
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableRow extends FO_LayoutObject {
|
||||
|
||||
var $colIndex = 0;
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableCell'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function initFOObject(FO_Object $col) {
|
||||
if (!$col instanceof FO_TableCell) {
|
||||
return;
|
||||
}
|
||||
$col->setContext("column", $this->colIndex++);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
|
||||
if ($obj instanceof FO_TableCell) {
|
||||
$this->setContext("x", $this->getContext("x")+
|
||||
$obj->getContext("width"));
|
||||
$this->setLocalContext("width", $this->getContext("width")+
|
||||
$obj->getContext("width"));
|
||||
if ($this->getContext("height") < $obj->getContext("height")) {
|
||||
$this->setLocalContext("height", $obj->getContext("height"));
|
||||
}
|
||||
}
|
||||
else if ($obj instanceof FO_TableRow) {
|
||||
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableHeader extends FO_TableRow {
|
||||
//oesi - set to _1 to work with php4
|
||||
static $CHILDNODES_1 = array(
|
||||
'FO_TableCell',
|
||||
'FO_TableRow'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES_1;
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableFooter extends FO_LayoutObject {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableCell',
|
||||
'FO_TableRow'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
}
|
||||
|
||||
class FO_TableBody extends FO_LayoutObject {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_TableCell',
|
||||
'FO_TableRow'
|
||||
);
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
if ($obj instanceof FO_TableRow) {
|
||||
$this->setLocalContext("width", $obj->getContext("width"));
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height"));
|
||||
$this->setContext("y", $this->getContext("y") +
|
||||
$obj->getContext("height"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class FO_TableCell extends FO_LayoutObject {
|
||||
|
||||
static $CHILDNODES = array(
|
||||
'FO_Block',
|
||||
'FO_BlockContainer',
|
||||
'FO_ListBlock',
|
||||
'FO_Table',
|
||||
'FO_TableAndCaption'
|
||||
);
|
||||
|
||||
|
||||
function getChildNodes() {
|
||||
return self::$CHILDNODES;
|
||||
}
|
||||
|
||||
function parse(DOMNode $node) {
|
||||
$col = $this->getContext("column");
|
||||
$width = $this->getContext("column-$col-width");
|
||||
$this->setLocalContext("width", $width);
|
||||
|
||||
parent::parse($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overlap borders that the total width isn't larger than the
|
||||
* specified
|
||||
*/
|
||||
function drawBordersAndBackground($pos) {
|
||||
list($x1, $y1, $width1, $height1) = $pos[0];
|
||||
list($x2, $y2, $width2, $height2) = $pos[1];
|
||||
$xd = ($x1-$x2)/2;
|
||||
$yd = ($y1-$y2)/2;
|
||||
$wd = ($width2-$width1)/2;
|
||||
$hd = ($height2-$height1)/2;
|
||||
$this->drawBackground($x2, $y2, $width2+$wd, $height2+$hd);
|
||||
$this->drawBorders($x2, $y2, $width2+$wd, $height2+$hd);
|
||||
}
|
||||
|
||||
function postParse(FO_Object $obj) {
|
||||
$this->setLocalContext("height", $this->getContext("height")+
|
||||
$obj->getContext("height")+0.5); // oesi - add +0.5 for tablespace
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
for($i=0;$i<=255;$i++)
|
||||
$fpdf_charwidths['courier'][chr($i)]=600;
|
||||
$fpdf_charwidths['courierB']=$fpdf_charwidths['courier'];
|
||||
$fpdf_charwidths['courierI']=$fpdf_charwidths['courier'];
|
||||
$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier'];
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helvetica']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
|
||||
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
|
||||
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
|
||||
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
|
||||
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helveticaB']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
|
||||
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
|
||||
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
|
||||
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
|
||||
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helveticaBI']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
|
||||
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
|
||||
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
|
||||
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
|
||||
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
|
||||
?>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
$fpdf_charwidths['helveticaI']=array(
|
||||
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
|
||||
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
|
||||
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
|
||||
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
|
||||
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
|
||||
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
|
||||
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
|
||||
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
|
||||
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
|
||||
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
|
||||
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
|
||||
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
|
||||
?>
|
||||
@@ -1,251 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+015A Sacute
|
||||
!8D U+0164 Tcaron
|
||||
!8E U+017D Zcaron
|
||||
!8F U+0179 Zacute
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+015B sacute
|
||||
!9D U+0165 tcaron
|
||||
!9E U+017E zcaron
|
||||
!9F U+017A zacute
|
||||
!A0 U+00A0 space
|
||||
!A1 U+02C7 caron
|
||||
!A2 U+02D8 breve
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0104 Aogonek
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+015E Scedilla
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0105 aogonek
|
||||
!BA U+015F scedilla
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+013D Lcaron
|
||||
!BD U+02DD hungarumlaut
|
||||
!BE U+013E lcaron
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+0154 Racute
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0139 Lacute
|
||||
!C6 U+0106 Cacute
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+011A Ecaron
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+010E Dcaron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0147 Ncaron
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0158 Rcaron
|
||||
!D9 U+016E Uring
|
||||
!DA U+00DA Uacute
|
||||
!DB U+0170 Uhungarumlaut
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+0162 Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0155 racute
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+013A lacute
|
||||
!E6 U+0107 cacute
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+011B ecaron
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+010F dcaron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0148 ncaron
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0159 rcaron
|
||||
!F9 U+016F uring
|
||||
!FA U+00FA uacute
|
||||
!FB U+0171 uhungarumlaut
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+0163 tcommaaccent
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,255 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0402 afii10051
|
||||
!81 U+0403 afii10052
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0453 afii10100
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+20AC Euro
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0409 afii10058
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+040A afii10059
|
||||
!8D U+040C afii10061
|
||||
!8E U+040B afii10060
|
||||
!8F U+040F afii10145
|
||||
!90 U+0452 afii10099
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9A U+0459 afii10106
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+045A afii10107
|
||||
!9D U+045C afii10109
|
||||
!9E U+045B afii10108
|
||||
!9F U+045F afii10193
|
||||
!A0 U+00A0 space
|
||||
!A1 U+040E afii10062
|
||||
!A2 U+045E afii10110
|
||||
!A3 U+0408 afii10057
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0490 afii10050
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0401 afii10023
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0404 afii10053
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+0407 afii10056
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+0406 afii10055
|
||||
!B3 U+0456 afii10103
|
||||
!B4 U+0491 afii10098
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0451 afii10071
|
||||
!B9 U+2116 afii61352
|
||||
!BA U+0454 afii10101
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0458 afii10105
|
||||
!BD U+0405 afii10054
|
||||
!BE U+0455 afii10102
|
||||
!BF U+0457 afii10104
|
||||
!C0 U+0410 afii10017
|
||||
!C1 U+0411 afii10018
|
||||
!C2 U+0412 afii10019
|
||||
!C3 U+0413 afii10020
|
||||
!C4 U+0414 afii10021
|
||||
!C5 U+0415 afii10022
|
||||
!C6 U+0416 afii10024
|
||||
!C7 U+0417 afii10025
|
||||
!C8 U+0418 afii10026
|
||||
!C9 U+0419 afii10027
|
||||
!CA U+041A afii10028
|
||||
!CB U+041B afii10029
|
||||
!CC U+041C afii10030
|
||||
!CD U+041D afii10031
|
||||
!CE U+041E afii10032
|
||||
!CF U+041F afii10033
|
||||
!D0 U+0420 afii10034
|
||||
!D1 U+0421 afii10035
|
||||
!D2 U+0422 afii10036
|
||||
!D3 U+0423 afii10037
|
||||
!D4 U+0424 afii10038
|
||||
!D5 U+0425 afii10039
|
||||
!D6 U+0426 afii10040
|
||||
!D7 U+0427 afii10041
|
||||
!D8 U+0428 afii10042
|
||||
!D9 U+0429 afii10043
|
||||
!DA U+042A afii10044
|
||||
!DB U+042B afii10045
|
||||
!DC U+042C afii10046
|
||||
!DD U+042D afii10047
|
||||
!DE U+042E afii10048
|
||||
!DF U+042F afii10049
|
||||
!E0 U+0430 afii10065
|
||||
!E1 U+0431 afii10066
|
||||
!E2 U+0432 afii10067
|
||||
!E3 U+0433 afii10068
|
||||
!E4 U+0434 afii10069
|
||||
!E5 U+0435 afii10070
|
||||
!E6 U+0436 afii10072
|
||||
!E7 U+0437 afii10073
|
||||
!E8 U+0438 afii10074
|
||||
!E9 U+0439 afii10075
|
||||
!EA U+043A afii10076
|
||||
!EB U+043B afii10077
|
||||
!EC U+043C afii10078
|
||||
!ED U+043D afii10079
|
||||
!EE U+043E afii10080
|
||||
!EF U+043F afii10081
|
||||
!F0 U+0440 afii10082
|
||||
!F1 U+0441 afii10083
|
||||
!F2 U+0442 afii10084
|
||||
!F3 U+0443 afii10085
|
||||
!F4 U+0444 afii10086
|
||||
!F5 U+0445 afii10087
|
||||
!F6 U+0446 afii10088
|
||||
!F7 U+0447 afii10089
|
||||
!F8 U+0448 afii10090
|
||||
!F9 U+0449 afii10091
|
||||
!FA U+044A afii10092
|
||||
!FB U+044B afii10093
|
||||
!FC U+044C afii10094
|
||||
!FD U+044D afii10095
|
||||
!FE U+044E afii10096
|
||||
!FF U+044F afii10097
|
||||
@@ -1,251 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!8E U+017D Zcaron
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9E U+017E zcaron
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,239 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0385 dieresistonos
|
||||
!A2 U+0386 Alphatonos
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+2015 afii00208
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+0384 tonos
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0388 Epsilontonos
|
||||
!B9 U+0389 Etatonos
|
||||
!BA U+038A Iotatonos
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+038C Omicrontonos
|
||||
!BD U+00BD onehalf
|
||||
!BE U+038E Upsilontonos
|
||||
!BF U+038F Omegatonos
|
||||
!C0 U+0390 iotadieresistonos
|
||||
!C1 U+0391 Alpha
|
||||
!C2 U+0392 Beta
|
||||
!C3 U+0393 Gamma
|
||||
!C4 U+0394 Delta
|
||||
!C5 U+0395 Epsilon
|
||||
!C6 U+0396 Zeta
|
||||
!C7 U+0397 Eta
|
||||
!C8 U+0398 Theta
|
||||
!C9 U+0399 Iota
|
||||
!CA U+039A Kappa
|
||||
!CB U+039B Lambda
|
||||
!CC U+039C Mu
|
||||
!CD U+039D Nu
|
||||
!CE U+039E Xi
|
||||
!CF U+039F Omicron
|
||||
!D0 U+03A0 Pi
|
||||
!D1 U+03A1 Rho
|
||||
!D3 U+03A3 Sigma
|
||||
!D4 U+03A4 Tau
|
||||
!D5 U+03A5 Upsilon
|
||||
!D6 U+03A6 Phi
|
||||
!D7 U+03A7 Chi
|
||||
!D8 U+03A8 Psi
|
||||
!D9 U+03A9 Omega
|
||||
!DA U+03AA Iotadieresis
|
||||
!DB U+03AB Upsilondieresis
|
||||
!DC U+03AC alphatonos
|
||||
!DD U+03AD epsilontonos
|
||||
!DE U+03AE etatonos
|
||||
!DF U+03AF iotatonos
|
||||
!E0 U+03B0 upsilondieresistonos
|
||||
!E1 U+03B1 alpha
|
||||
!E2 U+03B2 beta
|
||||
!E3 U+03B3 gamma
|
||||
!E4 U+03B4 delta
|
||||
!E5 U+03B5 epsilon
|
||||
!E6 U+03B6 zeta
|
||||
!E7 U+03B7 eta
|
||||
!E8 U+03B8 theta
|
||||
!E9 U+03B9 iota
|
||||
!EA U+03BA kappa
|
||||
!EB U+03BB lambda
|
||||
!EC U+03BC mu
|
||||
!ED U+03BD nu
|
||||
!EE U+03BE xi
|
||||
!EF U+03BF omicron
|
||||
!F0 U+03C0 pi
|
||||
!F1 U+03C1 rho
|
||||
!F2 U+03C2 sigma1
|
||||
!F3 U+03C3 sigma
|
||||
!F4 U+03C4 tau
|
||||
!F5 U+03C5 upsilon
|
||||
!F6 U+03C6 phi
|
||||
!F7 U+03C7 chi
|
||||
!F8 U+03C8 psi
|
||||
!F9 U+03C9 omega
|
||||
!FA U+03CA iotadieresis
|
||||
!FB U+03CB upsilondieresis
|
||||
!FC U+03CC omicrontonos
|
||||
!FD U+03CD upsilontonos
|
||||
!FE U+03CE omegatonos
|
||||
@@ -1,249 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+011E Gbreve
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0130 Idotaccent
|
||||
!DE U+015E Scedilla
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+011F gbreve
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0131 dotlessi
|
||||
!FE U+015F scedilla
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,233 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+20AA afii57636
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00D7 multiply
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD sfthyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 middot
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00F7 divide
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+05B0 afii57799
|
||||
!C1 U+05B1 afii57801
|
||||
!C2 U+05B2 afii57800
|
||||
!C3 U+05B3 afii57802
|
||||
!C4 U+05B4 afii57793
|
||||
!C5 U+05B5 afii57794
|
||||
!C6 U+05B6 afii57795
|
||||
!C7 U+05B7 afii57798
|
||||
!C8 U+05B8 afii57797
|
||||
!C9 U+05B9 afii57806
|
||||
!CB U+05BB afii57796
|
||||
!CC U+05BC afii57807
|
||||
!CD U+05BD afii57839
|
||||
!CE U+05BE afii57645
|
||||
!CF U+05BF afii57841
|
||||
!D0 U+05C0 afii57842
|
||||
!D1 U+05C1 afii57804
|
||||
!D2 U+05C2 afii57803
|
||||
!D3 U+05C3 afii57658
|
||||
!D4 U+05F0 afii57716
|
||||
!D5 U+05F1 afii57717
|
||||
!D6 U+05F2 afii57718
|
||||
!D7 U+05F3 gereshhebrew
|
||||
!D8 U+05F4 gershayimhebrew
|
||||
!E0 U+05D0 afii57664
|
||||
!E1 U+05D1 afii57665
|
||||
!E2 U+05D2 afii57666
|
||||
!E3 U+05D3 afii57667
|
||||
!E4 U+05D4 afii57668
|
||||
!E5 U+05D5 afii57669
|
||||
!E6 U+05D6 afii57670
|
||||
!E7 U+05D7 afii57671
|
||||
!E8 U+05D8 afii57672
|
||||
!E9 U+05D9 afii57673
|
||||
!EA U+05DA afii57674
|
||||
!EB U+05DB afii57675
|
||||
!EC U+05DC afii57676
|
||||
!ED U+05DD afii57677
|
||||
!EE U+05DE afii57678
|
||||
!EF U+05DF afii57679
|
||||
!F0 U+05E0 afii57680
|
||||
!F1 U+05E1 afii57681
|
||||
!F2 U+05E2 afii57682
|
||||
!F3 U+05E3 afii57683
|
||||
!F4 U+05E4 afii57684
|
||||
!F5 U+05E5 afii57685
|
||||
!F6 U+05E6 afii57686
|
||||
!F7 U+05E7 afii57687
|
||||
!F8 U+05E8 afii57688
|
||||
!F9 U+05E9 afii57689
|
||||
!FA U+05EA afii57690
|
||||
!FD U+200E afii299
|
||||
!FE U+200F afii300
|
||||
@@ -1,244 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!8D U+00A8 dieresis
|
||||
!8E U+02C7 caron
|
||||
!8F U+00B8 cedilla
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!9D U+00AF macron
|
||||
!9E U+02DB ogonek
|
||||
!A0 U+00A0 space
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00D8 Oslash
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0156 Rcommaaccent
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00C6 AE
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00F8 oslash
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+0157 rcommaaccent
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00E6 ae
|
||||
!C0 U+0104 Aogonek
|
||||
!C1 U+012E Iogonek
|
||||
!C2 U+0100 Amacron
|
||||
!C3 U+0106 Cacute
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+0118 Eogonek
|
||||
!C7 U+0112 Emacron
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0179 Zacute
|
||||
!CB U+0116 Edotaccent
|
||||
!CC U+0122 Gcommaaccent
|
||||
!CD U+0136 Kcommaaccent
|
||||
!CE U+012A Imacron
|
||||
!CF U+013B Lcommaaccent
|
||||
!D0 U+0160 Scaron
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0145 Ncommaaccent
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+014C Omacron
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0172 Uogonek
|
||||
!D9 U+0141 Lslash
|
||||
!DA U+015A Sacute
|
||||
!DB U+016A Umacron
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+017B Zdotaccent
|
||||
!DE U+017D Zcaron
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0105 aogonek
|
||||
!E1 U+012F iogonek
|
||||
!E2 U+0101 amacron
|
||||
!E3 U+0107 cacute
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+0119 eogonek
|
||||
!E7 U+0113 emacron
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+017A zacute
|
||||
!EB U+0117 edotaccent
|
||||
!EC U+0123 gcommaaccent
|
||||
!ED U+0137 kcommaaccent
|
||||
!EE U+012B imacron
|
||||
!EF U+013C lcommaaccent
|
||||
!F0 U+0161 scaron
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0146 ncommaaccent
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+014D omacron
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0173 uogonek
|
||||
!F9 U+0142 lslash
|
||||
!FA U+015B sacute
|
||||
!FB U+016B umacron
|
||||
!FC U+00FC udieresis
|
||||
!FD U+017C zdotaccent
|
||||
!FE U+017E zcaron
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,247 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+0300 gravecomb
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+0309 hookabovecomb
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+01A0 Ohorn
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+01AF Uhorn
|
||||
!DE U+0303 tildecomb
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+0301 acutecomb
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+0323 dotbelowcomb
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+01A1 ohorn
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+01B0 uhorn
|
||||
!FE U+20AB dong
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,225 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!85 U+2026 ellipsis
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0E01 kokaithai
|
||||
!A2 U+0E02 khokhaithai
|
||||
!A3 U+0E03 khokhuatthai
|
||||
!A4 U+0E04 khokhwaithai
|
||||
!A5 U+0E05 khokhonthai
|
||||
!A6 U+0E06 khorakhangthai
|
||||
!A7 U+0E07 ngonguthai
|
||||
!A8 U+0E08 chochanthai
|
||||
!A9 U+0E09 chochingthai
|
||||
!AA U+0E0A chochangthai
|
||||
!AB U+0E0B sosothai
|
||||
!AC U+0E0C chochoethai
|
||||
!AD U+0E0D yoyingthai
|
||||
!AE U+0E0E dochadathai
|
||||
!AF U+0E0F topatakthai
|
||||
!B0 U+0E10 thothanthai
|
||||
!B1 U+0E11 thonangmonthothai
|
||||
!B2 U+0E12 thophuthaothai
|
||||
!B3 U+0E13 nonenthai
|
||||
!B4 U+0E14 dodekthai
|
||||
!B5 U+0E15 totaothai
|
||||
!B6 U+0E16 thothungthai
|
||||
!B7 U+0E17 thothahanthai
|
||||
!B8 U+0E18 thothongthai
|
||||
!B9 U+0E19 nonuthai
|
||||
!BA U+0E1A bobaimaithai
|
||||
!BB U+0E1B poplathai
|
||||
!BC U+0E1C phophungthai
|
||||
!BD U+0E1D fofathai
|
||||
!BE U+0E1E phophanthai
|
||||
!BF U+0E1F fofanthai
|
||||
!C0 U+0E20 phosamphaothai
|
||||
!C1 U+0E21 momathai
|
||||
!C2 U+0E22 yoyakthai
|
||||
!C3 U+0E23 roruathai
|
||||
!C4 U+0E24 ruthai
|
||||
!C5 U+0E25 lolingthai
|
||||
!C6 U+0E26 luthai
|
||||
!C7 U+0E27 wowaenthai
|
||||
!C8 U+0E28 sosalathai
|
||||
!C9 U+0E29 sorusithai
|
||||
!CA U+0E2A sosuathai
|
||||
!CB U+0E2B hohipthai
|
||||
!CC U+0E2C lochulathai
|
||||
!CD U+0E2D oangthai
|
||||
!CE U+0E2E honokhukthai
|
||||
!CF U+0E2F paiyannoithai
|
||||
!D0 U+0E30 saraathai
|
||||
!D1 U+0E31 maihanakatthai
|
||||
!D2 U+0E32 saraaathai
|
||||
!D3 U+0E33 saraamthai
|
||||
!D4 U+0E34 saraithai
|
||||
!D5 U+0E35 saraiithai
|
||||
!D6 U+0E36 sarauethai
|
||||
!D7 U+0E37 saraueethai
|
||||
!D8 U+0E38 sarauthai
|
||||
!D9 U+0E39 sarauuthai
|
||||
!DA U+0E3A phinthuthai
|
||||
!DF U+0E3F bahtthai
|
||||
!E0 U+0E40 saraethai
|
||||
!E1 U+0E41 saraaethai
|
||||
!E2 U+0E42 saraothai
|
||||
!E3 U+0E43 saraaimaimuanthai
|
||||
!E4 U+0E44 saraaimaimalaithai
|
||||
!E5 U+0E45 lakkhangyaothai
|
||||
!E6 U+0E46 maiyamokthai
|
||||
!E7 U+0E47 maitaikhuthai
|
||||
!E8 U+0E48 maiekthai
|
||||
!E9 U+0E49 maithothai
|
||||
!EA U+0E4A maitrithai
|
||||
!EB U+0E4B maichattawathai
|
||||
!EC U+0E4C thanthakhatthai
|
||||
!ED U+0E4D nikhahitthai
|
||||
!EE U+0E4E yamakkanthai
|
||||
!EF U+0E4F fongmanthai
|
||||
!F0 U+0E50 zerothai
|
||||
!F1 U+0E51 onethai
|
||||
!F2 U+0E52 twothai
|
||||
!F3 U+0E53 threethai
|
||||
!F4 U+0E54 fourthai
|
||||
!F5 U+0E55 fivethai
|
||||
!F6 U+0E56 sixthai
|
||||
!F7 U+0E57 seventhai
|
||||
!F8 U+0E58 eightthai
|
||||
!F9 U+0E59 ninethai
|
||||
!FA U+0E5A angkhankhuthai
|
||||
!FB U+0E5B khomutthai
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,248 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0E01 kokaithai
|
||||
!A2 U+0E02 khokhaithai
|
||||
!A3 U+0E03 khokhuatthai
|
||||
!A4 U+0E04 khokhwaithai
|
||||
!A5 U+0E05 khokhonthai
|
||||
!A6 U+0E06 khorakhangthai
|
||||
!A7 U+0E07 ngonguthai
|
||||
!A8 U+0E08 chochanthai
|
||||
!A9 U+0E09 chochingthai
|
||||
!AA U+0E0A chochangthai
|
||||
!AB U+0E0B sosothai
|
||||
!AC U+0E0C chochoethai
|
||||
!AD U+0E0D yoyingthai
|
||||
!AE U+0E0E dochadathai
|
||||
!AF U+0E0F topatakthai
|
||||
!B0 U+0E10 thothanthai
|
||||
!B1 U+0E11 thonangmonthothai
|
||||
!B2 U+0E12 thophuthaothai
|
||||
!B3 U+0E13 nonenthai
|
||||
!B4 U+0E14 dodekthai
|
||||
!B5 U+0E15 totaothai
|
||||
!B6 U+0E16 thothungthai
|
||||
!B7 U+0E17 thothahanthai
|
||||
!B8 U+0E18 thothongthai
|
||||
!B9 U+0E19 nonuthai
|
||||
!BA U+0E1A bobaimaithai
|
||||
!BB U+0E1B poplathai
|
||||
!BC U+0E1C phophungthai
|
||||
!BD U+0E1D fofathai
|
||||
!BE U+0E1E phophanthai
|
||||
!BF U+0E1F fofanthai
|
||||
!C0 U+0E20 phosamphaothai
|
||||
!C1 U+0E21 momathai
|
||||
!C2 U+0E22 yoyakthai
|
||||
!C3 U+0E23 roruathai
|
||||
!C4 U+0E24 ruthai
|
||||
!C5 U+0E25 lolingthai
|
||||
!C6 U+0E26 luthai
|
||||
!C7 U+0E27 wowaenthai
|
||||
!C8 U+0E28 sosalathai
|
||||
!C9 U+0E29 sorusithai
|
||||
!CA U+0E2A sosuathai
|
||||
!CB U+0E2B hohipthai
|
||||
!CC U+0E2C lochulathai
|
||||
!CD U+0E2D oangthai
|
||||
!CE U+0E2E honokhukthai
|
||||
!CF U+0E2F paiyannoithai
|
||||
!D0 U+0E30 saraathai
|
||||
!D1 U+0E31 maihanakatthai
|
||||
!D2 U+0E32 saraaathai
|
||||
!D3 U+0E33 saraamthai
|
||||
!D4 U+0E34 saraithai
|
||||
!D5 U+0E35 saraiithai
|
||||
!D6 U+0E36 sarauethai
|
||||
!D7 U+0E37 saraueethai
|
||||
!D8 U+0E38 sarauthai
|
||||
!D9 U+0E39 sarauuthai
|
||||
!DA U+0E3A phinthuthai
|
||||
!DF U+0E3F bahtthai
|
||||
!E0 U+0E40 saraethai
|
||||
!E1 U+0E41 saraaethai
|
||||
!E2 U+0E42 saraothai
|
||||
!E3 U+0E43 saraaimaimuanthai
|
||||
!E4 U+0E44 saraaimaimalaithai
|
||||
!E5 U+0E45 lakkhangyaothai
|
||||
!E6 U+0E46 maiyamokthai
|
||||
!E7 U+0E47 maitaikhuthai
|
||||
!E8 U+0E48 maiekthai
|
||||
!E9 U+0E49 maithothai
|
||||
!EA U+0E4A maitrithai
|
||||
!EB U+0E4B maichattawathai
|
||||
!EC U+0E4C thanthakhatthai
|
||||
!ED U+0E4D nikhahitthai
|
||||
!EE U+0E4E yamakkanthai
|
||||
!EF U+0E4F fongmanthai
|
||||
!F0 U+0E50 zerothai
|
||||
!F1 U+0E51 onethai
|
||||
!F2 U+0E52 twothai
|
||||
!F3 U+0E53 threethai
|
||||
!F4 U+0E54 fourthai
|
||||
!F5 U+0E55 fivethai
|
||||
!F6 U+0E56 sixthai
|
||||
!F7 U+0E57 seventhai
|
||||
!F8 U+0E58 eightthai
|
||||
!F9 U+0E59 ninethai
|
||||
!FA U+0E5A angkhankhuthai
|
||||
!FB U+0E5B khomutthai
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+20AC Euro
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+0160 Scaron
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0161 scaron
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+017D Zcaron
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+017E zcaron
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0152 OE
|
||||
!BD U+0153 oe
|
||||
!BE U+0178 Ydieresis
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+0105 aogonek
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+20AC Euro
|
||||
!A5 U+201E quotedblbase
|
||||
!A6 U+0160 Scaron
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0161 scaron
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0218 Scommaaccent
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+0179 Zacute
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017A zacute
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+010C Ccaron
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+017D Zcaron
|
||||
!B5 U+201D quotedblright
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+017E zcaron
|
||||
!B9 U+010D ccaron
|
||||
!BA U+0219 scommaaccent
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0152 OE
|
||||
!BD U+0153 oe
|
||||
!BE U+0178 Ydieresis
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0106 Cacute
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+015A Sacute
|
||||
!D8 U+0170 Uhungarumlaut
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0118 Eogonek
|
||||
!DE U+021A Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+0107 cacute
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+015B sacute
|
||||
!F8 U+0171 uhungarumlaut
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0119 eogonek
|
||||
!FE U+021B tcommaaccent
|
||||
!FF U+00FF ydieresis
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+02D8 breve
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+013D Lcaron
|
||||
!A6 U+015A Sacute
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+0160 Scaron
|
||||
!AA U+015E Scedilla
|
||||
!AB U+0164 Tcaron
|
||||
!AC U+0179 Zacute
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017D Zcaron
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+0105 aogonek
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+013E lcaron
|
||||
!B6 U+015B sacute
|
||||
!B7 U+02C7 caron
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0161 scaron
|
||||
!BA U+015F scedilla
|
||||
!BB U+0165 tcaron
|
||||
!BC U+017A zacute
|
||||
!BD U+02DD hungarumlaut
|
||||
!BE U+017E zcaron
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+0154 Racute
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0139 Lacute
|
||||
!C6 U+0106 Cacute
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+011A Ecaron
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+010E Dcaron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0147 Ncaron
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0158 Rcaron
|
||||
!D9 U+016E Uring
|
||||
!DA U+00DA Uacute
|
||||
!DB U+0170 Uhungarumlaut
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+0162 Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0155 racute
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+013A lacute
|
||||
!E6 U+0107 cacute
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+011B ecaron
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+010F dcaron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0148 ncaron
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0159 rcaron
|
||||
!F9 U+016F uring
|
||||
!FA U+00FA uacute
|
||||
!FB U+0171 uhungarumlaut
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+0163 tcommaaccent
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+0138 kgreenlandic
|
||||
!A3 U+0156 Rcommaaccent
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0128 Itilde
|
||||
!A6 U+013B Lcommaaccent
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+0160 Scaron
|
||||
!AA U+0112 Emacron
|
||||
!AB U+0122 Gcommaaccent
|
||||
!AC U+0166 Tbar
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017D Zcaron
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+0105 aogonek
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0157 rcommaaccent
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+0129 itilde
|
||||
!B6 U+013C lcommaaccent
|
||||
!B7 U+02C7 caron
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0161 scaron
|
||||
!BA U+0113 emacron
|
||||
!BB U+0123 gcommaaccent
|
||||
!BC U+0167 tbar
|
||||
!BD U+014A Eng
|
||||
!BE U+017E zcaron
|
||||
!BF U+014B eng
|
||||
!C0 U+0100 Amacron
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+012E Iogonek
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+0116 Edotaccent
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+012A Imacron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0145 Ncommaaccent
|
||||
!D2 U+014C Omacron
|
||||
!D3 U+0136 Kcommaaccent
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+0172 Uogonek
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0168 Utilde
|
||||
!DE U+016A Umacron
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0101 amacron
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+012F iogonek
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+0117 edotaccent
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+012B imacron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0146 ncommaaccent
|
||||
!F2 U+014D omacron
|
||||
!F3 U+0137 kcommaaccent
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+0173 uogonek
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0169 utilde
|
||||
!FE U+016B umacron
|
||||
!FF U+02D9 dotaccent
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0401 afii10023
|
||||
!A2 U+0402 afii10051
|
||||
!A3 U+0403 afii10052
|
||||
!A4 U+0404 afii10053
|
||||
!A5 U+0405 afii10054
|
||||
!A6 U+0406 afii10055
|
||||
!A7 U+0407 afii10056
|
||||
!A8 U+0408 afii10057
|
||||
!A9 U+0409 afii10058
|
||||
!AA U+040A afii10059
|
||||
!AB U+040B afii10060
|
||||
!AC U+040C afii10061
|
||||
!AD U+00AD hyphen
|
||||
!AE U+040E afii10062
|
||||
!AF U+040F afii10145
|
||||
!B0 U+0410 afii10017
|
||||
!B1 U+0411 afii10018
|
||||
!B2 U+0412 afii10019
|
||||
!B3 U+0413 afii10020
|
||||
!B4 U+0414 afii10021
|
||||
!B5 U+0415 afii10022
|
||||
!B6 U+0416 afii10024
|
||||
!B7 U+0417 afii10025
|
||||
!B8 U+0418 afii10026
|
||||
!B9 U+0419 afii10027
|
||||
!BA U+041A afii10028
|
||||
!BB U+041B afii10029
|
||||
!BC U+041C afii10030
|
||||
!BD U+041D afii10031
|
||||
!BE U+041E afii10032
|
||||
!BF U+041F afii10033
|
||||
!C0 U+0420 afii10034
|
||||
!C1 U+0421 afii10035
|
||||
!C2 U+0422 afii10036
|
||||
!C3 U+0423 afii10037
|
||||
!C4 U+0424 afii10038
|
||||
!C5 U+0425 afii10039
|
||||
!C6 U+0426 afii10040
|
||||
!C7 U+0427 afii10041
|
||||
!C8 U+0428 afii10042
|
||||
!C9 U+0429 afii10043
|
||||
!CA U+042A afii10044
|
||||
!CB U+042B afii10045
|
||||
!CC U+042C afii10046
|
||||
!CD U+042D afii10047
|
||||
!CE U+042E afii10048
|
||||
!CF U+042F afii10049
|
||||
!D0 U+0430 afii10065
|
||||
!D1 U+0431 afii10066
|
||||
!D2 U+0432 afii10067
|
||||
!D3 U+0433 afii10068
|
||||
!D4 U+0434 afii10069
|
||||
!D5 U+0435 afii10070
|
||||
!D6 U+0436 afii10072
|
||||
!D7 U+0437 afii10073
|
||||
!D8 U+0438 afii10074
|
||||
!D9 U+0439 afii10075
|
||||
!DA U+043A afii10076
|
||||
!DB U+043B afii10077
|
||||
!DC U+043C afii10078
|
||||
!DD U+043D afii10079
|
||||
!DE U+043E afii10080
|
||||
!DF U+043F afii10081
|
||||
!E0 U+0440 afii10082
|
||||
!E1 U+0441 afii10083
|
||||
!E2 U+0442 afii10084
|
||||
!E3 U+0443 afii10085
|
||||
!E4 U+0444 afii10086
|
||||
!E5 U+0445 afii10087
|
||||
!E6 U+0446 afii10088
|
||||
!E7 U+0447 afii10089
|
||||
!E8 U+0448 afii10090
|
||||
!E9 U+0449 afii10091
|
||||
!EA U+044A afii10092
|
||||
!EB U+044B afii10093
|
||||
!EC U+044C afii10094
|
||||
!ED U+044D afii10095
|
||||
!EE U+044E afii10096
|
||||
!EF U+044F afii10097
|
||||
!F0 U+2116 afii61352
|
||||
!F1 U+0451 afii10071
|
||||
!F2 U+0452 afii10099
|
||||
!F3 U+0453 afii10100
|
||||
!F4 U+0454 afii10101
|
||||
!F5 U+0455 afii10102
|
||||
!F6 U+0456 afii10103
|
||||
!F7 U+0457 afii10104
|
||||
!F8 U+0458 afii10105
|
||||
!F9 U+0459 afii10106
|
||||
!FA U+045A afii10107
|
||||
!FB U+045B afii10108
|
||||
!FC U+045C afii10109
|
||||
!FD U+00A7 section
|
||||
!FE U+045E afii10110
|
||||
!FF U+045F afii10193
|
||||
@@ -1,250 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+2018 quoteleft
|
||||
!A2 U+2019 quoteright
|
||||
!A3 U+00A3 sterling
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AF U+2015 afii00208
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+0384 tonos
|
||||
!B5 U+0385 dieresistonos
|
||||
!B6 U+0386 Alphatonos
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0388 Epsilontonos
|
||||
!B9 U+0389 Etatonos
|
||||
!BA U+038A Iotatonos
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+038C Omicrontonos
|
||||
!BD U+00BD onehalf
|
||||
!BE U+038E Upsilontonos
|
||||
!BF U+038F Omegatonos
|
||||
!C0 U+0390 iotadieresistonos
|
||||
!C1 U+0391 Alpha
|
||||
!C2 U+0392 Beta
|
||||
!C3 U+0393 Gamma
|
||||
!C4 U+0394 Delta
|
||||
!C5 U+0395 Epsilon
|
||||
!C6 U+0396 Zeta
|
||||
!C7 U+0397 Eta
|
||||
!C8 U+0398 Theta
|
||||
!C9 U+0399 Iota
|
||||
!CA U+039A Kappa
|
||||
!CB U+039B Lambda
|
||||
!CC U+039C Mu
|
||||
!CD U+039D Nu
|
||||
!CE U+039E Xi
|
||||
!CF U+039F Omicron
|
||||
!D0 U+03A0 Pi
|
||||
!D1 U+03A1 Rho
|
||||
!D3 U+03A3 Sigma
|
||||
!D4 U+03A4 Tau
|
||||
!D5 U+03A5 Upsilon
|
||||
!D6 U+03A6 Phi
|
||||
!D7 U+03A7 Chi
|
||||
!D8 U+03A8 Psi
|
||||
!D9 U+03A9 Omega
|
||||
!DA U+03AA Iotadieresis
|
||||
!DB U+03AB Upsilondieresis
|
||||
!DC U+03AC alphatonos
|
||||
!DD U+03AD epsilontonos
|
||||
!DE U+03AE etatonos
|
||||
!DF U+03AF iotatonos
|
||||
!E0 U+03B0 upsilondieresistonos
|
||||
!E1 U+03B1 alpha
|
||||
!E2 U+03B2 beta
|
||||
!E3 U+03B3 gamma
|
||||
!E4 U+03B4 delta
|
||||
!E5 U+03B5 epsilon
|
||||
!E6 U+03B6 zeta
|
||||
!E7 U+03B7 eta
|
||||
!E8 U+03B8 theta
|
||||
!E9 U+03B9 iota
|
||||
!EA U+03BA kappa
|
||||
!EB U+03BB lambda
|
||||
!EC U+03BC mu
|
||||
!ED U+03BD nu
|
||||
!EE U+03BE xi
|
||||
!EF U+03BF omicron
|
||||
!F0 U+03C0 pi
|
||||
!F1 U+03C1 rho
|
||||
!F2 U+03C2 sigma1
|
||||
!F3 U+03C3 sigma
|
||||
!F4 U+03C4 tau
|
||||
!F5 U+03C5 upsilon
|
||||
!F6 U+03C6 phi
|
||||
!F7 U+03C7 chi
|
||||
!F8 U+03C8 psi
|
||||
!F9 U+03C9 omega
|
||||
!FA U+03CA iotadieresis
|
||||
!FB U+03CB upsilondieresis
|
||||
!FC U+03CC omicrontonos
|
||||
!FD U+03CD upsilontonos
|
||||
!FE U+03CE omegatonos
|
||||
@@ -1,256 +0,0 @@
|
||||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+011E Gbreve
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0130 Idotaccent
|
||||
!DE U+015E Scedilla
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+011F gbreve
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0131 dotlessi
|
||||
!FE U+015F scedilla
|
||||
!FF U+00FF ydieresis
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user