From: konrad Date: Sun, 10 Jan 2010 13:10:29 +0000 (+0000) Subject: implemented ACL editing X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=9059033a02ba367bf5ccf33cacbeeb008369ce9d;p=web%2Fkonrad%2Fsmoke.git implemented ACL editing git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@413 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- diff --git a/src/dialogs/aclwin.cpp b/src/dialogs/aclwin.cpp new file mode 100644 index 0000000..0dcb429 --- /dev/null +++ b/src/dialogs/aclwin.cpp @@ -0,0 +1,96 @@ +// +// C++ Implementation: acldialog +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2010 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + + +#include "acltabs.h" +#include "msinterface.h" +#include "main.h" + +#include "aclwin.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +QPointerMAclWindow::instance; + +void MAclWindow::showWindow(QWidget*p) +{ + if(instance.isNull()){ + instance=new MAclWindow(p); + } + if(!instance->isVisible())instance->show(); + if(instance->isMinimized())instance->showNormal(); + instance->activateWindow(); + instance->raise(); +} + +MAclWindow::MAclWindow(QWidget*par) + :QMainWindow(par) +{ + profilekey=req->profileId(); + setAttribute(Qt::WA_DeleteOnClose); + setWindowTitle(tr("MagicSmoke ACL Editor [%1@%2]") .arg(req->currentUser()) .arg(QSettings().value("profiles/"+profilekey+"/name").toString())); + + rtimer.setInterval(QSettings().value("profiles/"+profilekey+"/refresh",300).toInt()*1000); + rtimer.start(); + connect(&rtimer,SIGNAL(timeout()),this,SLOT(refreshData())); + + //menu + QMenuBar*mb=menuBar(); + QMenu*m=mb->addMenu(tr("&Window")); + m->addAction(tr("&Close"),this,SLOT(close())); + + //tabs + setCentralWidget(tab=new QTabWidget); + //user tab + tab->addTab(usertab=new MUserTab(profilekey),tr("Users")); + //role tab + tab->addTab(roletab=new MRoleTab(profilekey),tr("Roles")); + //host tab + tab->addTab(hosttab=new MHostTab(profilekey),tr("Hosts")); + + mb->addMenu(MApplication::helpMenu()); + + //status bar + statusBar()->setSizeGripEnabled(true); + + //unused tab disabling... + if(!req->hasRight(req->RGetAllUsers)){ + tab->setTabEnabled(tab->indexOf(usertab),false); + } + if(!req->hasRight(req->RGetAllHosts)){ + tab->setTabEnabled(tab->indexOf(hosttab),false); + } + if(!req->hasRight(req->RGetAllRoles)){ + tab->setTabEnabled(tab->indexOf(roletab),false); + } +} + + +void MAclWindow::refreshData() +{ + QSettings set; + set.beginGroup("profiles/"+profilekey); + if(set.value("refreshUsers",false).toBool() && req->hasRight(req->RGetAllUsers)) + usertab->updateUsers(); + if(set.value("refreshHosts",false).toBool() && req->hasRight(req->RGetAllHosts)) + hosttab->updateHosts(); + if(set.value("refreshRoles",false).toBool() && req->hasRight(req->RGetAllRoles)) + roletab->updateRoles(); +} diff --git a/src/dialogs/aclwin.h b/src/dialogs/aclwin.h new file mode 100644 index 0000000..68c4636 --- /dev/null +++ b/src/dialogs/aclwin.h @@ -0,0 +1,48 @@ +// +// C++ Interface: acldialog +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2010 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +#ifndef MAGICSMOKE_ACLWIN_H +#define MAGICSMOKE_ACLWIN_H + +#include +#include +#include + +class MUserTab; +class MHostTab; +class MRoleTab; + +class MAclWindow:public QMainWindow +{ + Q_OBJECT + public: + static void showWindow(QWidget*); + + private slots: + void refreshData(); + private: + MAclWindow(QWidget*); + + static QPointerinstance; + + //the profile associated with this session + QString profilekey; + //widgets + QTabWidget*tab; + MUserTab*usertab; + MHostTab*hosttab; + MRoleTab*roletab; + //refresh timers + QTimer rtimer; +}; + +#endif diff --git a/src/dialogs/dialogs.pri b/src/dialogs/dialogs.pri index 4e1a4e9..dabe072 100644 --- a/src/dialogs/dialogs.pri +++ b/src/dialogs/dialogs.pri @@ -8,7 +8,8 @@ HEADERS += \ dialogs/customerdlg.h \ dialogs/checkdlg.h \ dialogs/passwdchg.h \ - dialogs/pricecatdlg.h + dialogs/pricecatdlg.h \ + dialogs/aclwin.h SOURCES += \ dialogs/configdialog.cpp \ @@ -20,6 +21,7 @@ SOURCES += \ dialogs/customerdlg.cpp \ dialogs/checkdlg.cpp \ dialogs/passwdchg.cpp \ - dialogs/pricecatdlg.cpp + dialogs/pricecatdlg.cpp \ + dialogs/aclwin.cpp INCLUDEPATH += ./dialogs \ No newline at end of file diff --git a/src/iface/msinterface.h b/src/iface/msinterface.h index bc4b07f..1afda98 100644 --- a/src/iface/msinterface.h +++ b/src/iface/msinterface.h @@ -41,6 +41,7 @@ class MSInterface:public MInterface QString hostName()const{return m_host;} /**returns whether the user is part of this role*/ + //TODO: return actual role membership! bool hasRole(QString)const{return false;} /**returns whether the user has a particular right*/ @@ -68,6 +69,9 @@ class MSInterface:public MInterface /**returns a pointer to the template storage engine*/ MTemplateStore* templateStore(){return temp;} + + /**returns the profile ID of this session*/ + QString profileId()const{return profileid;} public slots: /**logs into the server, returns true on success*/ diff --git a/src/mwin/acltabs.cpp b/src/mwin/acltabs.cpp index 854733e..f82e37e 100644 --- a/src/mwin/acltabs.cpp +++ b/src/mwin/acltabs.cpp @@ -13,10 +13,13 @@ #include "checkdlg.h" #include "msinterface.h" #include "passwdchg.h" +#include "keygen.h" #include "acltabs.h" #include +#include +#include #include #include #include @@ -172,24 +175,53 @@ void MUserTab::editUserRoles() QString lb=nm+": "+aroles[i].description(); acl<currentIndex(); if(!sel.isValid())return; //get uname & descr QString name=usermodel->data(usermodel->index(sel.row(),0)).toString(); //... - MUser usr(req,name); - MCheckList acl=usr.getHosts(); - MCheckDialog cd(this,acl,"Edit hosts of user "+name); - if(cd.exec()==QDialog::Accepted) - usr.setHosts(cd.getCheckList());*/ + MTGetUserHosts gr=req->queryGetUserHosts(name); + if(gr.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Cannot retrieve users hosts: %1").arg(gr.errorString())); + return; + } + MTGetAllHostNames ar=req->queryGetAllHostNames(); + if(ar.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Cannot retrieve host descriptions: %1").arg(ar.errorString())); + return; + } + MCheckList acl; + QStringList uhost=gr.gethosts(); + QStringList ahosts=ar.gethostnames(); + for(int i=0;iaddLayout(vl=new QVBoxLayout,0); vl->addWidget(p=new QPushButton(tr("New Host...")),0); connect(p,SIGNAL(clicked()),this,SLOT(newHost())); - p->setEnabled(req->hasRole("addhost")); - vl->addWidget(thishostbutton=p=new QPushButton(tr("Add This Host...")),0); - connect(p,SIGNAL(clicked()),this,SLOT(addThisHost())); - p->setEnabled(req->hasRole("addhost")); + p->setEnabled(req->hasRight(req->RSetHost)); vl->addWidget(p=new QPushButton(tr("Delete Host...")),0); connect(p,SIGNAL(clicked()),this,SLOT(deleteHost())); - p->setEnabled(req->hasRole("deletehost")); + p->setEnabled(req->hasRight(req->RDeleteHost)); vl->addSpacing(20); vl->addWidget(p=new QPushButton(tr("Generate New Key...")),0); connect(p,SIGNAL(clicked()),this,SLOT(changeHostKey())); - p->setEnabled(req->hasRole("sethostkey")); + p->setEnabled(req->hasRight(req->RSetHost)); vl->addWidget(p=new QPushButton(tr("Import...")),0); connect(p,SIGNAL(clicked()),this,SLOT(importHost())); - p->setEnabled(req->hasRole("addhost")); + p->setEnabled(req->hasRight(req->RSetHost)); vl->addWidget(p=new QPushButton(tr("Export...")),0); connect(p,SIGNAL(clicked()),this,SLOT(exportHost())); - p->setEnabled(req->hasRole("gethostkey")); vl->addStretch(10); if(req->hasRight(req->RGetAllHosts)){ @@ -262,8 +290,6 @@ MHostTab::MHostTab(QString pk) void MHostTab::updateHosts() { - bool foundThis=false; - QString thisHost=req->hostName(); MTGetAllHosts ah=req->queryGetAllHosts(); QListhsl=ah.gethosts(); hostmodel->clear(); @@ -273,15 +299,12 @@ void MHostTab::updateHosts() for(int i=0;isetData(hostmodel->index(i,0),hsl[i].name().value()); hostmodel->setData(hostmodel->index(i,1),hsl[i].key().value()); - if(thisHost==hsl[i].name()) - foundThis=true; } hosttable->resizeColumnsToContents(); - thishostbutton->setEnabled(!foundThis && req->hasRight(req->RSetHost)); } void MHostTab::newHost() -{/*TODO +{ //get Host Name QString hname; do{ @@ -291,26 +314,27 @@ void MHostTab::newHost() if(!QRegExp("[A-Za-z][A-Za-z0-9_]*").exactMatch(hname))continue; }while(false); //create it - MHost hst(req,hname); - int e=hst.newKey(); - if(e<128){ - if(QMessageBox::warning(this,tr("Warning"),tr("The key of this new host could only be generated with %n bits entropy. Store anyway?","",e).arg(e),QMessageBox::Yes|QMessageBox::No,QMessageBox::No)!=QMessageBox::Yes) - return; + QString key; + if(1){//limit visibility of key generator + MKeyGen mkg; + key=mkg.getKey(); + if(key=="") + if(mkg.exec()!=QDialog::Accepted) + return; + key=mkg.getKey(); + } + //set it + MTSetHost sh=MTSetHost::query(hname,key); + if(sh.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Error while creating new host: %1").arg(sh.errorString())); + return; } - hst.create(); //update - updateHosts();*/ -} - -void MHostTab::addThisHost() -{/*TODO - MHost hst(req,req->hostName(),QSettings().value("hostkey").toString()); - hst.create(); - updateHosts();*/ + updateHosts(); } void MHostTab::deleteHost() -{/*TODO +{ //get selection QModelIndex sel=hosttable->currentIndex(); if(!sel.isValid())return; @@ -319,33 +343,45 @@ void MHostTab::deleteHost() //ask if(QMessageBox::question(this,tr("Delete this Host?"),tr("Really delete host '%1'?").arg(name),QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes)return; //delete it - MHost(req,name).deleteHost(); - updateHosts();*/ + MTDeleteHost dh=MTDeleteHost::query(name); + if(dh.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Error while deleting host: %1").arg(dh.errorString())); + return; + } + updateHosts(); } void MHostTab::changeHostKey() -{/*TODO +{ //get selection QModelIndex sel=hosttable->currentIndex(); if(!sel.isValid())return; //get hname QString name=hostmodel->data(hostmodel->index(sel.row(),0)).toString(); //ask - if(QMessageBox::question(this,tr("Change Host Key?"),tr("Really change the key of host '%1'?").arg(name),QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes)return; + if(QMessageBox::question(this,tr("Change Host Key?"),tr("Really change the key of host '%1'? It will lock users from thist host out until you install the key at it.").arg(name), QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes)return; //change it - MHost hst(req,name); - int e=hst.newKey(); - if(e<128){ - if(QMessageBox::warning(this,tr("Warning"),tr("The new key of this host could only be generated with %n bits entropy. Store anyway?","",e).arg(e),QMessageBox::Yes|QMessageBox::No,QMessageBox::No)!=QMessageBox::Yes) - return; + QString key; + if(1){//limit visibility of key generator + MKeyGen mkg; + key=mkg.getKey(); + if(key=="") + if(mkg.exec()!=QDialog::Accepted) + return; + key=mkg.getKey(); + } + //set it + MTSetHost sh=MTSetHost::query(name,key); + if(sh.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Error while changing host: %1").arg(sh.errorString())); + return; } - hst.save(); //update - updateHosts();*/ + updateHosts(); } void MHostTab::importHost() -{/*TODO +{ QStringList fn; QFileDialog fdlg(this,tr("Import Key from File"),QString(),"Magic Smoke Host Key (*.mshk)"); fdlg.setDefaultSuffix("mshk"); @@ -387,13 +423,16 @@ void MHostTab::importHost() return; } //save - MHost hst(req,hname,key); - hst.create(); - updateHosts();*/ + MTSetHost sh=MTSetHost::query(hname,key); + if(sh.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Error while changing host: %1").arg(sh.errorString())); + return; + } + updateHosts(); } void MHostTab::exportHost() -{/*TODO +{ //get selection QModelIndex sel=hosttable->currentIndex(); if(!sel.isValid())return; @@ -421,6 +460,163 @@ void MHostTab::exportHost() QString chk=QCryptographicHash::hash(key.toAscii(),QCryptographicHash::Md5).toHex(); QString out="MagicSmokeHostKey\n"+name+"\n"+key+"\n"+chk; fd.write(out.toAscii()); - fd.close();*/ + fd.close(); +} + +/*****************************************************************************/ + +MRoleTab::MRoleTab(QString pk) +{ + profilekey=pk; + + QHBoxLayout*hl;QVBoxLayout*vl; + QPushButton*p; + //host tab + setLayout(hl=new QHBoxLayout); + hl->addWidget(roletable=new QTableView,10); + roletable->setModel(rolemodel=new QStandardItemModel(this)); + roletable->setSelectionMode(QAbstractItemView::SingleSelection); + roletable->setEditTriggers(QAbstractItemView::NoEditTriggers); + hl->addSpacing(5); + hl->addLayout(vl=new QVBoxLayout,0); + vl->addWidget(p=new QPushButton(tr("New Role...")),0); + connect(p,SIGNAL(clicked()),this,SLOT(newRole())); + p->setEnabled(req->hasRight(req->RCreateRole)); + vl->addWidget(p=new QPushButton(tr("Delete Role...")),0); + connect(p,SIGNAL(clicked()),this,SLOT(deleteRole())); + p->setEnabled(req->hasRight(req->RDeleteRole)); + vl->addSpacing(20); + vl->addWidget(p=new QPushButton(tr("Change Description...")),0); + connect(p,SIGNAL(clicked()),this,SLOT(editDescription())); + p->setEnabled(req->hasRight(req->RSetRoleDescription)); + vl->addWidget(p=new QPushButton(tr("Edit Flags...")),0); + connect(p,SIGNAL(clicked()),this,SLOT(editFlags())); + p->setEnabled(false); + vl->addWidget(p=new QPushButton(tr("Edit Rights...")),0); + connect(p,SIGNAL(clicked()),this,SLOT(editRights())); + p->setEnabled(req->hasRight(req->RSetRoleRights)); + vl->addStretch(10); + + if(req->hasRight(req->RGetAllRoles)){ + updateRoles(); + }else{ + setEnabled(false); + } +} + + + +void MRoleTab::updateRoles() +{ + QString thisHost=req->hostName(); + MTGetAllRoles ah=req->queryGetAllRoles(); + QListrsl=ah.getroles(); + rolemodel->clear(); + rolemodel->insertColumns(0,2); + rolemodel->insertRows(0,rsl.size()); + rolemodel->setHorizontalHeaderLabels(QStringList()<setData(rolemodel->index(i,0),rsl[i].name().value()); + rolemodel->setData(rolemodel->index(i,1),rsl[i].description().value()); + } + roletable->resizeColumnsToContents(); } +void MRoleTab::newRole() +{ + //get Role Name + QString rname; + do{ + bool ok; + rname=QInputDialog::getText(this,tr("Create New Role"),tr("Please enter a role name:"),QLineEdit::Normal,rname,&ok); + if(!ok)return; + if(!QRegExp("[A-Za-z][A-Za-z0-9-_\\.]*").exactMatch(rname))continue; + }while(false); + //create it + MTCreateRole cr=MTCreateRole::query(rname); + if(cr.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Error while trying to create role: %1").arg(cr.errorString())); + return; + } + //update + updateRoles(); +} +void MRoleTab::deleteRole() +{ + //get selection + QModelIndex sel=roletable->currentIndex(); + if(!sel.isValid())return; + //get hname + QString name=rolemodel->data(rolemodel->index(sel.row(),0)).toString(); + //ask + if(QMessageBox::question(this,tr("Delete this Role?"),tr("Really delete role '%1'?").arg(name),QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes)return; + //delete it + MTDeleteRole dr=MTDeleteRole::query(name); + if(dr.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Error while trying to delete role: %1").arg(dr.errorString())); + return; + } + updateRoles(); +} +void MRoleTab::editDescription() +{ + //get selection + QModelIndex sel=roletable->currentIndex(); + if(!sel.isValid())return; + //get uname & descr + QString name=rolemodel->data(rolemodel->index(sel.row(),0)).toString(); + QString descr=rolemodel->data(rolemodel->index(sel.row(),1)).toString(); + //edit descr + bool ok; + descr=QInputDialog::getText(this,tr("Edit Description"),tr("Description of role %1:").arg(name),QLineEdit::Normal,descr,&ok); + if(ok) + req->querySetRoleDescription(name,descr); + //update + updateRoles(); +} +void MRoleTab::editFlags() +{ + //TODO: implement flags +} +void MRoleTab::editRights() +{ + //get selection + QModelIndex sel=roletable->currentIndex(); + if(!sel.isValid())return; + //get uname & descr + QString name=rolemodel->data(rolemodel->index(sel.row(),0)).toString(); + //... + MTGetRole gr=req->queryGetRole(name); + if(gr.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Cannot retrieve role: %1").arg(gr.errorString())); + return; + } + MTGetAllRightNames ar=req->queryGetAllRightNames(); + if(ar.hasError()){ + QMessageBox::warning(this,tr("Warning"),tr("Cannot retrieve right list: %1").arg(ar.errorString())); + return; + } + MCheckList acl; + QStringList rrights=gr.getrole().value().rights(); + QStringList arights=ar.getrights(); + for(int i=0;istringToRight(nm); + if(rg!=MInterface::NoRight){ + lb=req->rightToLocalString(rg); + if(nm!=lb)lb=nm+": "+lb; + }else lb=nm; + acl< #include @@ -101,12 +101,6 @@ MOverview::MOverview(QString pk) //Entrance Control Tab tab->addTab(entrancetab=new MEntranceTab(pk),tr("Entrance")); - //user tab - tab->addTab(usertab=new MUserTab(pk),tr("Users")); - - //host tab - tab->addTab(hosttab=new MHostTab(pk),tr("Hosts")); - //menus not connected to any specific tab... m=mb->addMenu(tr("&Customer")); m->addAction(tr("&Show all customers"),this,SLOT(customerMgmt())); @@ -125,6 +119,9 @@ MOverview::MOverview(QString pk) m->addAction(tr("&Display settings..."),this,SLOT(displaySettings())); m=mb->addMenu(tr("&Admin")); + m->addAction(tr("&User Administration..."),this,SLOT(aclWindow())) + ->setEnabled(req->hasRight(req->RGetAllUsers) || req->hasRight(req->RGetAllHosts) || req->hasRight(req->RGetAllRoles)); + m->addSeparator(); m->addAction(tr("Backup &Settings..."),this,SLOT(backupSettings())) ->setEnabled(req->hasRight(req->RBackup)); m->addAction(tr("&Backup now..."),this,SLOT(doBackup())) @@ -136,7 +133,6 @@ MOverview::MOverview(QString pk) statusBar()->setSizeGripEnabled(true); //unused tab disabling... - //TODO: convert "role" to "right" if(!req->hasRight(req->RGetAllEvents)){ eventtab->setEnabled(false); tab->setTabEnabled(tab->indexOf(eventtab),false); @@ -147,12 +143,6 @@ MOverview::MOverview(QString pk) if(!req->hasRight(req->RGetOrderList)){ tab->setTabEnabled(tab->indexOf(ordertab),false); } - if(!req->hasRight(req->RGetAllUsers)){ - tab->setTabEnabled(tab->indexOf(usertab),false); - } - if(!req->hasRight(req->RGetAllHosts)){ - tab->setTabEnabled(tab->indexOf(hosttab),false); - } } void MOverview::closeEvent(QCloseEvent*ce) @@ -304,13 +294,9 @@ void MOverview::refreshData() { QSettings set; set.beginGroup("profiles/"+profilekey); - if(set.value("refreshEvents",false).toBool() && req->hasRole("geteventlist")) + if(set.value("refreshEvents",false).toBool() && req->hasRight(req->RGetAllEvents)) eventtab->updateEvents(); - if(set.value("refreshUsers",false).toBool() && req->hasRole("getusers")) - usertab->updateUsers(); - if(set.value("refreshHosts",false).toBool() && req->hasRole("gethosts")) - hosttab->updateHosts(); - if(set.value("refreshShipping",false).toBool() && req->hasRole("getshipping")) + if(set.value("refreshShipping",false).toBool() && req->hasRight(req->RGetAllShipping)) carttab->updateShipping(); } @@ -515,6 +501,10 @@ void MOverview::backupSettings() } } +void MOverview::aclWindow() +{ + MAclWindow::showWindow(this); +} /**********************************************/ diff --git a/src/mwin/overview.h b/src/mwin/overview.h index 476077d..559c858 100644 --- a/src/mwin/overview.h +++ b/src/mwin/overview.h @@ -94,6 +94,9 @@ class MOverview:public QMainWindow /**switch to the cart tab*/ void switchToCartTab(); + /**open ACL/user admin window*/ + void aclWindow(); + private: //the profile associated with this session QString profilekey; @@ -103,8 +106,6 @@ class MOverview:public QMainWindow MCartTab*carttab; MOrdersTab*ordertab; MEntranceTab*entrancetab; - MUserTab*usertab; - MHostTab*hosttab; //refresh timers QTimer rtimer,baktimer; }; diff --git a/src/smoke_de.ts b/src/smoke_de.ts index 3bd99c6..9ebce98 100644 --- a/src/smoke_de.ts +++ b/src/smoke_de.ts @@ -2,39 +2,237 @@ + MAclWindow + + + MagicSmoke ACL Editor [%1@%2] + + + + + &Window + + + + + &Close + S&chließen + + + + Users + Nutzer + + + + Roles + + + + + Hosts + Hosts + + + + MAddressChoiceDialog + + + Chose an Address + + + + + Add Address + + + + + Cancel + Abbrechen + + + + Warning + Warnung + + + + Unable to save changes made to addresses: %1 + + + + + MAddressDialog + + + Edit Address + + + + + Create Address + + + + + Last used: + + + + + Name: + Name: + + + + + Address: + Rechnungsadresse: + + + + City: + + + + + State: + + + + + ZIP Code: + + + + + Country: + + + + + + Ok + Ok + + + + + Cancel + Abbrechen + + + + Create New Country... + must contain leading space to distinguish it from genuine countries + + + + + Select Country + + + + + Please select a country: + + + + + Create New Country + + + + + Country Name: + + + + + Abbreviation: + + + + + + Warning + Warnung + + + + The country name and abbreviation must contain something! + + + + + Error while creating country: %1 + + + + + MAddressWidget + + + Select + Auswählen + + + + Edit + + + + + Delete + + + + + Delete Address + + + + + Really delete this address? +%1 + + + + MAppStyleDialog - + Application Style - + GUI Style: - + System Default - + Stylesheet: - + Ok - + Ok - + Cancel - + Abbrechen - + Select Stylesheet @@ -60,47 +258,47 @@ MBackupDialog - + Backup Settings Einstellungen Sicherungskopie - + Backup File: Sicherungskopie Datei: - + ... ... - + Generations to keep: Anzahl Generationen: - + Automatic Backup: Automatische Sicherung: - + Interval in days: Intervall in Tagen: - + &OK &Ok - + &Cancel &Abbrechen - + Backup File Sicherungsdatei @@ -110,418 +308,604 @@ Add Ticket - + Eintrittskarte hinzufügen Add Voucher - + Gutschein hinzufügen - Remove Item + Add Shop Item + Remove Item + + + + + Remove Line - + Customer: - - Shipping Method: + + Invoice Address: - + + Shipping Method: + Versandoption: + + + Delivery Address: - + Lieferadresse: - + Comments: - + Kommentare: - + Order - + Reserve - + Clear - + Zurücksetzen - - C&art - + + Add &Ticket + Eintrittskarte &hinzufügen - - Add &Ticket + + Add &Voucher + &Gutschein hinzufügen + + + + Ca&rt - - Add &Voucher + + Add &Shop-Item - - &Remove Item + + &Remove Line - + &Abort Shopping - + &Einkauf abbrechen - + &Update Shipping Options - + Versandoptionen auffrischen - + (No Shipping) - + (Kein Versand) - + Amount - + Anzahl - + Title - + Titel - + Start Time - + Anfangszeit - - Select Event to order Ticket - + + Price + Preis - - Select - + + + + + + + + Warning + Warnung - - Cancel + + Please set the customer first. - - - MCentDialog - - - OK - Ok - - - Cancel - Abbrechen + + Select Event to order Ticket + Bitte wählen Sie eine Verstaltung aus, um zu bestellen - - - MCheckDialog - - Ok - Ok + + Select + Auswählen - + + + Cancel - Abbrechen + Abbrechen - - - MConfigDialog - - Magic Smoke Configuration + + Error getting event, please try again. - - &Profile + + This event has no prices associated. Cannot sell tickets. - - &New Profile... + + Select Price Category - - &Delete Profile + + Please chose a price category: - - &Rename Profile - + + + Ok + Ok - - C&lone Profile - + + Select Voucher + Gutschein wählen - - &Make Default Profile - + + Select voucher price and value: + Bitte Gutschein-Preis und -Wert wählen: - - &Export Host Key... - + + Price: + Preis: - - &Import Host Key... - + + Value: + Wert: - - &Generate Host Key... + + Voucher (value %1) - - &Close Window + + There are problems with the contents of the cart, please check and then try again. - - &Settings - + + + Error + Fehler - - &Language... - + + There is nothing in the order. Ignoring it. + Bestellung ist leer. Vorgang abgebrochen. - - &OpenOffice.org Settings... - + + Please chose a customer first! + Bitte wählen Sie zunächst einen Kunden aus! - - Set &Default Label Font... + + Shipping - - Set &Application Style... + + You have chosen a shipping method, but no address. Are you sure you want to continue? - - Connection + + Reservations can only contain tickets. - - Server URL: + + Error while creating reservation: %1 - - Proxy: + + Error while creating order: %1 - - Proxy Username: + + The customer is not valid, please chose another one. - - Proxy Password: + + The delivery address is not valid, please chose another one. - - Authentication + + The invoice address is not valid, please chose another one. - - Hostname: + + Shipping Type does not exist or you do not have permission to use it. - - Hostkey: + + The event is already over, please remove this entry. - - Default Username: + + You cannot order tickets for this event anymore, ask a more privileged user. - - SSL Exceptions + + The event is (almost) sold out, there are %1 tickets left. - - List of non-fatal SSL exceptions: + + The event does not exist or there is another serious problem, please remove this entry. - - Clear + + You do not have permission to create vouchers with this value, please remove it. - - Probe Server + + The price tag of this voucher is not valid, please remove and recreate it. - - - - New Profile + + + MCentDialog + + + OK + Ok + + + + Cancel + Abbrechen + + + + MCheckDialog + + + Ok + Ok + + + + Cancel + Abbrechen + + + + MConfigDialog + + + Magic Smoke Configuration - - - - Please enter a profile name. It must be non-empty and must not be used yet: + + &Profile + + + + + &New Profile... + &Neues Profil + + + + &Delete Profile + + + + + &Rename Profile + + + + + C&lone Profile + + + + + &Make Default Profile + + + + + &Export Host Key... + Hostkey &exportieren... + + + + &Import Host Key... + Hostkey &importieren... + + + + &Generate Host Key... + Hostkey &generieren... + + + + &Close Window + &Fenster schließen + + + + &Settings + + + + + &Language... + &Sprache + + + + &OpenOffice.org Settings... + OpenOffice Einstellungen... + + + + Set &Default Label Font... + + + + + Set &Application Style... + + + + + Connection + + + + + Server URL: + Server-URL: + + + + Proxy: + Proxy: + + + + Proxy Username: + Nutzername Proxy: + + + + Proxy Password: + Passwort Proxy: + + + + Authentication + + + + + Hostname: - + + Hostkey: + + + + + Default Username: + + + + + SSL Exceptions + + + + + List of non-fatal SSL exceptions: + + + + + Clear + Zurücksetzen + + + + Probe Server + + + + + + New Profile + Neues Profil + + + + + + Please enter a profile name. It must be non-empty and must not be used yet: + Bitte geben Sie einen Profilnamen ein (mind. 1 Zeichen): + + + Rename Profile - - - - - - - - - + + + + + + + + + Warning - + Warnung - + This profile name is already in use. - + Generate Hostkey - + Do you really want to generate a new host key for this profile? This may disable all accounts from this host. - + Export Key to File - + Unable to open file %1 for writing: %2 - + Importing a key overwrites the host key that is currently used by this profile. This may disable your accounts. Do you still want to continue? - + Import Key from File - + Key aus Datei importieren - + Unable to open file %1 for reading: %2 - - + + This is not a host key file. - + Dies ist keine Hostkeydatei. - + This host key file does not contain a valid host name. - + Die Hostkeydatei enthält keinen gültigen Hostnamen. - + This host key file does not contain a valid key. - + Diese Datei enthält keinen gültigen Hostkey. - + The key check sum did not match. Please get a clean copy of the host key file. - + Die Checksumme dieser Datei ist fehlgeschlagen. Bitte besorgen Sie eine neue Kopie der Datei. - + Chose Default Font - + Please chose a default font: - - + + Server Probe - + The request finished without errors. - + The request finished with an error: %1 - + SSL Errors encountered: - + Certificate "%1" Fingerprint (sha1): %2 Error: %3 @@ -529,148 +913,262 @@ - + Accept connection anyway? - + SSL Warning - + Common Name - + SHA-1 Digest - + Error Type + MContactTableDelegate + + + (New Contact Type) + + + + + Create new Contact Type + + + + + Contact Type Name: + + + + + Contact Type URI Prefix: + + + + + Ok + Ok + + + + Cancel + Abbrechen + + + + Warning + Warnung + + + + Error while creating contact type: %1 + + + + MCustomerDialog - + Customer %1 Kunde %1 - + New Customer Neuer Kunde - + + Customer + Kunde + + + Name: Name: - Address: - Rechnungsadresse: + Rechnungsadresse: - Contact Information: - Kontaktinformationen: + Kontaktinformationen: - + Web-Login/eMail: Web-Login/eMail: - + + Edit Login + + + + Comment: Kommentar: - + + Addresses + + + + + Add Address + + + + + Contact Information + + + + + Add + + + + + Remove + + + + + Type + table: contact type + + + + + Contact + table: contact info + + + + Save Speichern - + Cancel Abbrechen + + + First Name: + + + + + Title: + Titel: + + + + + Warning + Warnung + + + + Error while changing customer data: %1 + + + + + Error while creating customer data: %1 + + MCustomerListDialog - + Select a Customer Kunde auswählen - + Customers Kunden - + Details... Details... - + Create new... Neu... - + Delete... Löschen... - + Select Auswählen - + Cancel Abbrechen - + Close Schließen - + Delete Customer Kunden Löschen - + Really delete this customer (%1)? Diesen Kunden (%1) wirklich löschen? - + merge with other entry: mit anderem Eintrag vereinen: - + &Yes &Ja - + &No &Nein - + Error Fehler @@ -679,461 +1177,1160 @@ Kann Kunden nicht löschen. - + Failed to delete customer: %1 Kann Kunden nicht löschen: %1 - MEntranceTab + MEEPriceEdit - - Enter or scan Ticket-ID: + + Change Price + Preis ändern + + + + Price category: - - - MEvent + + + Price: + Preis: + + + + Maximum Seats: + + + + + Ok + Ok + + + + Cancel + Abbrechen + + + + MEntranceTab + + + Enter or scan Ticket-ID: + Kartennummer eingeben oder scannen: + + + + Open Order + + + + + Total: + + + + + Used: + + + + + Unused: + + + + + Reserved: + + + + + searching... + entrance control + + + + + Ticket "%1" Not Valid + Karte "%1" ist nicht gültig. + + + + Ticket "%1" is not for this event. + Karte "%1" ist nicht für diese Veranstaltung. + + + + Ticket "%1" has already been used + Karte "%1" wurde bereits verwendet. + + + + Ticket "%1" has not been bought. + Karte "%1" wurde nicht gekauft. + + + + Ticket "%1" Ok + Karte "%1" Okay. + + + + Ticket "%1" is not paid for! + Karte "%1" ist nicht bezahlt!!! + + + + Ticket "%1" cannot be accepted, please check the order! + Karte "%1" kann nicht akzeptiert werden, bitte prüfen Sie die Bestellung. + + + + Warning + Warnung + + + + Error while retrieving order: %s + + + + + MEvent Event is not complete, cannot save. Veranstaltung ist nicht komplett. Kann nicht speichern. - [0-9]+\.[0-9]{2} price validator regexp - [0-9]+,[0-9]{2} + [0-9]+,[0-9]{2} - - . price decimal dot - , + , - - yyyy-MM-dd hh:mm ap date/time format - ddd, d.M.yyyy hh:mm + ddd, d.M.yyyy hh:mm - yyyy-MM-dd date format - d.M.yyyy + d.M.yyyy MEventEditor - + Event Editor Veranstaltungseditor + Event + Veranstaltung + + + + Title: + Titel: + + + + Artist: + Künstler: + + + Description: + Beschreibung: + + + + Start Time: + Startzeit: + + + + + ddd MMMM d yyyy, h:mm ap + time format + ddd, d.M.yyyy hh:mm + + + + End Time: + Endzeit: + + + + Room/Place: + Raum/Ort: + + + + Capacity: + Sitzplätze: + + + Default Price: + Kartenpreis: + + + + Event Cancelled: + Veranstaltung absagen: + + + + Description + Beschreibung + + + + The description will be displayed on the web site, please use HTML syntax. + + + + + Comment + + + + + The comment is for internal use only, please add any hints relevant for your collegues. + + + + + Prices + + + + + Change Price + Preis ändern + + + + Add Price + + + + + Remove Price + + + + + Save + Speichern + + + + Close + Schließen + + + + Error while creating event: %1 + + + + + Error while changing event: %1 + + + + + Price Category + + + + + Price + Preis + + + + Ticket Capacity + + + + + Tickets + Karten + + + + Seats Blocked + + + + + Cannot remove price '%1' - it has tickets in the database. + + + + + + Cancel + Abbrechen + + + + Error while creating new room: %1 + + + + + Select an Artist + + + + + New... + new artist + Neu... + + + + Select + select artist + Auswählen + + + + New Artist + + + + + Name of new artist: + + + + + Error while creating new artist: %1 + + + + + + + + + + Warning + Warnung + + + + Unable to load event from server. + Veranstaltung kann nicht vom Server geladen werden. + + + Problem while uploading event: %s + Problem beim anlegen der Veranstaltung: %s + + + + Select a Room + Raum auswählen + + + + New... + new room + Neu... + + + + Select + select room + Auswählen + + + + New Room + Neuer Raum + + + + Name of new room: + Name des Raumes: + + + + ID: + ID: + + + + MEventSummary + + + Summary for Event %1 + Übersicht zu Veranstaltung %1 + + + Title: Titel: - + Artist: Künstler: - - Description: - Beschreibung: + + Start: + Beginn: + + + yyyy-MM-dd hh:mm ap + Date+Time format for displaying event start time + ddd, d.M.yyyy hh:mm + + + + Capacity: + Sitzplätze: + + + + Tickets currently reserved: + Momentan reservierte Karten: + + + + Tickets currently cancelled: + Momentan abgesagte Karten: + + + + Tickets currently usable: + Momentan nutzbare Karten: + + + + Total Income: + erwarteter Umsatz: + + + . + decimal dot + , + + + + Price + Preis + + + + Bought + Gekauft + + + + Used + Benutzt + + + + Unused + Unbenutzt + + + + Print + Drucken + + + + Save as... + Speichern unter... + + + + Close + Schließen + + + + + + Warning + Warnung + + + Unable to get template file (eventsummary.odtt). Giving up. + Kann Vorlage (eventsummary.odtt) nicht finden. Gebe auf. + + + + Summary + Zusammenfassung + + + + Tickets + Karten + + + + Comments + Kommentare + + + + Order: + Bestellung: + + + + Customer: + Kunde: + + + + Error while retrieving data: %1 + + + + + + Unable to get template file (eventsummary). Giving up. + Kann Vorlage (eventsummary) nicht finden. Gebe auf. + + + + Open Document File (*.%1) + ODF Datei (*.%1) + + + + MEventsTab + + + New Event... + Neue Veranstaltung... + + + + Details... + Details... + + + + Order Ticket... + Bestellen... + + + + Event Summary... + Veranstaltungsübersicht... + + + + Cancel Event... + Veranstaltung absagen... + + + + &Event + &Veranstaltung + + + + &Update Event List + &Veranstaltungsliste auffrischen + + + + &Show/Edit details... + &Details anzeigen/editieren... + + + + &New Event... + &Neue Veranstaltung... + + + + Show &old Events + vergangene Veranstaltungen anzeigen + + + + Start Time + Anfangszeit + + + + Title + Titel + + + + Free + Frei + + + + Reserved + Reserviert + + + + Sold + Verkauft + + + + Capacity + Sitzplätze: + + + + ddd MMMM d yyyy, h:mm ap + time format + ddd, d.M.yyyy hh:mm + + + + Cancel Event + Veranstaltung absagen + + + + Please enter a reason to cancel event "%1" or abort: + Bitte geben Sie einen Grund für die Absage der Veranstaltung "%1" ein: + + + + Event Cancelled + Veranstaltung abgesagt + + + + The event "%1" has been cancelled. Please inform everybody who bought a ticket. + Die Veranstaltung "%1" wurde abgesagt. Bitte informieren Sie alle Kunden. + + + + Warning + Warnung + + + + Unable to cancel event "%1": %2. + + + + + MHostTab + + + New Host... + Neuer Host... + + + + Add This Host... + Diesen Host hinzufügen... + + + + Delete Host... + Host löschen... + + + + Generate New Key... + Neuen Schlüssel anlegen... + + + + Import... + Importieren... + + + + Export... + Exportieren... + + + + Host Name + Hostname + + + + Host Key + Hostkey + + + + MInterface + + + Backup + Sicherung + + + + GetLanguage + Übersetzung für Servermeldungen holen + + + + ServerInfo + Serverinformationen + + + + Login + Login + + + + Logout + Logout + + + + GetMyRoles + meine Rollen herausfinden + + + + GetMyRights + meine Rechte herausfinden + + + + ChangeMyPassword + Mein Passwort ändern + + + + GetAllUsers + Nutzer abfragen + + + + CreateUser + Nutzer anlegen + + + + ChangePassword + Passwort eines anderen Nutzers ändern + + + + DeleteUser + Nutzer löschen + + + + SetUserDescription + Nutzerkommentar setzen + + + + GetUserRoles + Rollen eines anderen Nutzers herausfinden - - Start Time: - Startzeit: + + SetUserRoles + Rollen eines anderen Nutzers setzen - - - ddd MMMM d yyyy, h:mm ap - time format - ddd, d.M.yyyy hh:mm + + GetAllRoles + Alle Rollen abfragen - - End Time: - Endzeit: + + GetRole + spezifische Rolle abfragen - - Room/Place: - Raum/Ort: + + CreateRole + Rolle anlegen - - Capacity: - Sitzplätze: + + SetRoleDescription + Rollenkommentar setzen - - Default Price: - Kartenpreis: + + SetRoleRights + Rollenrechte setzen - - Event Cancelled: - Veranstaltung absagen: + + DeleteRole + Rolle löschen - - Save - Speichern + + GetAllRightNames + Namen aller Rechte abfragen - - - Cancel - Abbrechen + + GetAllHostNames + Namen aller Hosts abfragen - - Warning - Warnung + + GetAllHosts + Alle Hosts (incl. Keys) abfragen - - Unable to load event from server. - Veranstaltung kann nicht vom Server geladen werden. + + SetHost + Host ändern/anlegen - Problem while uploading event: %s - Problem beim anlegen der Veranstaltung: %s + + DeleteHost + Host löschen - - Select a Room - Raum auswählen + + GetUserHosts + erlaubte Hosts eines Nutzers abfragen - - New... - new room - Neu... + + SetUserHosts + erlaubte Hosts eines Nutzers abfragen - - Select - select room - Auswählen + + GetAllContactTypes + Kontaktinformationstypen abfragen - New Room - Neuer Raum + + CreateContactType + Kontaktinformationstypen anlegen - Name of new room: - Name des Raumes: + + GetCustomer + Kunden abfragen - - ID: - ID: + + GetAllCustomerNames + Alle Kundennamen abfragen - - - MEventSummary - - Summary for Event %1 - Übersicht zu Veranstaltung %1 + + CreateCustomer + Kunden anlegen - - Title: - Titel: + + ChangeCustomer + Kunden ändern - - Artist: - Künstler: + + DeleteCustomer + Kunden löschen - - Start: - Beginn: + + GetAddress + Addresse abfragen - yyyy-MM-dd hh:mm ap - Date+Time format for displaying event start time - ddd, d.M.yyyy hh:mm + + GetAllCountries + gespeicherte Länder abfragen - - Capacity: - Sitzplätze: + + CreateCountry + Land anlegen - - Tickets currently reserved: - Momentan reservierte Karten: + + GetAllArtists + Künstler abfragen - - Tickets currently cancelled: - Momentan abgesagte Karten: + + CreateArtist + Künstler anlegen - - Tickets currently usable: - Momentan nutzbare Karten: + + GetAllPriceCategories + Preiskategorien abfragen - - Total Income: - erwarteter Umsatz: + + CreatePriceCategory + Preiskategorie anlegen - . - decimal dot - , + + GetEvent + Veranstaltungsdetails abfragen - - Price - Preis + + GetAllEvents + Liste der Veranstaltungen abfragen - - Bought - Gekauft + + GetEventList + Liste der Veranstaltungen abfragen (spezifische Liste) - - Used - Benutzt + + CreateEvent + Veranstaltung anlegen - - Unused - Unbenutzt + + ChangeEvent + Veranstaltung ändern - - Print - Drucken + + CancelEvent + Veranstaltung absagen - - Save as... - Speichern unter... + + GetAllRooms + Liste aller Räume abfragen - - Close - Schließen + + CreateRoom + Raum anlegen - Warning - Warnung + + GetEventSummary + Veranstaltungübersicht - Unable to get template file (eventsummary.odtt). Giving up. - Kann Vorlage (eventsummary.odtt) nicht finden. Gebe auf. + + GetTicket + Ticket abrufen - - Summary - Zusammenfassung + + GetVoucher + Gutschein abfragen - - Tickets - Karten + + GetOrder + Bestellung: Details abfragen - - Comments - Kommentare + + GetOrderList + Liste der Bestellungen abfragen - - Order: - Bestellung: + + GetOrdersByEvents + Bestellungen finden, die Veranstaltung enthalten - - Customer: - Kunde: + + GetOrdersByCustomer + Bestellungen finden, die zu einem Kunden gehören - Unable to get template file (eventsummary). Giving up. - Kann Vorlage (eventsummary) nicht finden. Gebe auf. + + GetOrderByBarcode + Bestellung finden, die Eintrittskarte oder Gutschein enthält - Open Document File (*.%1) - ODF Datei (*.%1) + + CreateOrder + Bestellung anlegen - - - MEventsTab - - New Event... - + + CreateReservation + Reservierung anlegen - - Details... - + + ReservationToOrder + Reservierung in Bestellung wandeln - - Order Ticket... - + + CancelOrder + Bestellung stornieren - - Event Summary... - + + OrderPay + Bestellung bezahlen - - Cancel Event... - + + OrderRefund + Bestellung: Geld zurück geben - - &Event - + + UseVoucher + Gutschein benutzen (damit bezahlen) - - &Update Event List - + + OrderChangeShipping + Versandoption einer Bestellung ändern - - &Show/Edit details... - + + OrderMarkShipped + Bestellung als verschickt markieren - - &New Event... - + + OrderAddComment + Bestellkommentar (in angelegter Bestellung) hinzufügen - - Show &old Events - + + OrderChangeComments + Bestellkommentar (in angelegter Bestellung) ändern (Adminfunktion) - - Start Time - + + ReturnTicketVoucher + Eintrittskarte oder Gutschein zurückgeben - - Title - + + ChangeTicketPrice + Ticketpreis ändern - - Free - + + GetAllShipping + Versandoptionen holen - - Reserved - + + GetValidVoucherPrices + Gutscheinpreise abfragen (zB. für Bestellformular) - - Sold - + + UseTicket + Ticket entwerten - - Capacity - + + GetEntranceEvents + Liste der Veranstaltungen abfragen, die am Einlass relevant sind - - ddd MMMM d yyyy, h:mm ap - time format - + + GetTemplateList + Vorlagenliste abfragen - - Cancel Event - + + GetTemplate + Vorlage abfragen - - Please enter a reason to cancel event "%1" or abort: - + + ChangeEvent:CancelEvent + Veranstaltung absagen - - Event Cancelled - + + CreateOrder:AnyVoucherValue + Bestellung anlegen: beliebige Gutscheinwerte erlauben - - The event "%1" has been cancelled. Please inform everybody who bought a ticket. - + + CreateOrder:DiffVoucherValuePrice + Bestellung anlegen: Gutscheinpreis darf von Gutscheinwert abweichen - - Warning - + + CreateOrder:LateSale + Bestellung anlegen: bis zu Veranstaltungsbeginn erlauben - - Unable to cancel event "%1": %2. - + + CreateOrder:AfterTheFactSale + Bestellung anlegen: auch nach der Veranstaltung erlauben (Adminfunktion) - - - MHostTab - - New Host... - + + CreateReservation:LateReserve + Reservierung anlegen: bis Veranstaltungsbeginn erlauben - - Add This Host... - + + CancelOrder:CancelSentOrder + Bestellung stornieren: auch für bereits versandte Bestellung - - Delete Host... - + + CancelOrder:CancelPastTickets + Bestellung stornieren: auch für Bestellung mit Karten vergangener Veranstaltungen - - Generate New Key... - + + OrderChangeShipping:ChangePrice + Versandoption einer Bestellung ändern: beliebigen Preis erlauben - - Import... - + + OrderMarkShipped:SetTime + Bestellung als verschickt markieren: beliebigen Zeitpunkt erlauben - - Export... - + + ReturnTicketVoucher:ReturnPastTicket + Eintrittskarte oder Gutschein zurückgeben: auch abgelaufene Karten erlauben - - Host Name - + + ChangeTicketPrice:ChangeUsedTicket + Ticketpreis ändern: auch bereits genutzte Karten - - Host Key - + + ChangeTicketPrice:ChangePastTicket + Ticketpreis ändern: auch abgelaufene Karten @@ -1249,7 +2446,7 @@ At least %1 Bits of random are required. &File - + &Datei @@ -1259,7 +2456,7 @@ At least %1 Bits of random are required. &Configure - + &Konfigurieren @@ -1269,27 +2466,27 @@ At least %1 Bits of random are required. Profile: - + Profil: Username: - + Benutzername: Password: - + Passwort: Login - + Login Warning - + Warnung @@ -1451,501 +2648,360 @@ At least %1 Bits of random are required. MMoneyLog - Money Log of %1 %2 - Geldtransfers von %1 %2 + Geldtransfers von %1 %2 - Close - Schließen + Schließen MOCartOrder - - + + Ok ok - - - - - - SaleOnly - saleonly - - - - - - OrderOnly - orderonly - + Ok + - Invalid invalid - - - - Ok - - - - - - SaleOnly - - - - - - OrderOnly - - - - - - Invalid - - MOCartTicket - - + + Ok ok - - - - - - TooLate - toolate - - - - - - Exhausted - exhausted - - - - - - SaleOnly - saleonly - - - - - - OrderOnly - orderonly - + Ok - Ok + EventOver TooLate + toolate Exhausted + exhausted - SaleOnly - - - - - - OrderOnly + Invalid MOCartVoucher - - - Ok - ok - - - - - - InvalidValue - invalidvalue - - - - - - InvalidPrice - invalidprice - + + + Ok + ok + Ok - Ok + InvalidValue + invalidvalue - InvalidValue - - - - - InvalidPrice + invalidprice - MOOrderAbstract + MOEvent - - - Placed - placed - + + [0-9]+\.[0-9]{2} + price validator regexp + [0-9]+,[0-9]{2} - - - Sent - sent - + + . + price decimal dot + , - - - Sold - sold + + + yyyy-MM-dd hh:mm ap + date/time format - - - Cancelled - cancelled - + + yyyy-MM-dd + date format + d.M.yyyy + + + MOOrder - - - Reserved - reserved + + + yyyy-MM-dd hh:mm ap + date/time format - - - Closed - closed + + + yyyy-MM-dd + date format + d.M.yyyy + + + + MOOrderAbstract + + + + Placed + placed - Placed + Sent + sent - Sent - + Sold + sold + Verkauft - Sold + Cancelled + cancelled - Cancelled - + Reserved + reserved + Reserviert - Reserved - - - - - Closed + closed MOOrderInfoAbstract - - + + Placed placed - - - Sent - sent - - - - - - Sold - sold - - - - - - Cancelled - cancelled - - - - - - Reserved - reserved - - - - - - Closed - closed - - - - Placed + Sent + sent - Sent - + Sold + sold + Verkauft - Sold + Cancelled + cancelled - Cancelled - + Reserved + reserved + Reserviert - Reserved - - - - - Closed + closed MOTicketAbstract - - + + Reserved reserved - + Reserviert - - + + Ordered ordered - - + + Used used - + Benutzt - - + + Cancelled cancelled - - + + Refund refund - - + + MaskBlock maskblock - - + + MaskPay maskpay - - + + MaskUsable maskusable - - + + MaskReturnable maskreturnable - - - Reserved - - - - - - Ordered + + + MaskChangeable + + + MOTicketUse - - - Used - + + + Ok + Ok - - - Cancelled + + + NotFound - - - Refund + + + WrongEvent - - - MaskBlock + + + AlreadyUsed - - - MaskPay + + + NotUsable - - - MaskUsable + + + Unpaid - - - MaskReturnable + + + InvalidEvent - MOVoucher - - - - Ok - ok - - - - - - InvalidValue - invalidvalue - - - - - - InvalidPrice - invalidprice - - + MOVoucherAbstract - - + + Ok - + Ok - - + + InvalidValue - - + + InvalidPrice @@ -2082,18 +3138,14 @@ At least %1 Bits of random are required. , - - yyyy-MM-dd hh:mm ap date/time format - ddd, dd.MM.yyyy hh:mm 'Uhr' + ddd, dd.MM.yyyy hh:mm 'Uhr' - - yyyy-MM-dd date format - d.M.yyyy + d.M.yyyy This ticket is not part of this order. @@ -2132,17 +3184,17 @@ At least %1 Bits of random are required. MOrderItemView - + Preview Tickets Karten-Vorschau - + Ticket: Eintrittskarte: - + Voucher: Gutschein: @@ -2150,17 +3202,17 @@ At least %1 Bits of random are required. MOrderWindow - + Order Details Bestelldetails - + &Order &Bestellung - + &Order... &Bestellung... @@ -2169,47 +3221,47 @@ At least %1 Bits of random are required. &Verkauf... - + C&ancel Order... Bestellung &Stornieren... - + &Close S&chließen - + &Payment &Bezahlung - + Receive &Payment... &bezahlen... - + &Refund... &zurückgeben... - + P&rinting &Druck - + Print &Bill... &Rechnung drucken... - + Save Bill &as file... Rechnung &speichern... - + Print &Tickets... &Eintrittskarten drucken... @@ -2222,42 +3274,42 @@ At least %1 Bits of random are required. Eintrittskarten &ansehen... - + Order ID: Bestell-Nr.: - + Order Date: Bestelldatum: - + Shipping Date: Versandtdatum: - + Customer: Kunde: - + Sold by: Verkauft durch: - + Total Price: Gesamtpreis: - + Already Paid: bereits bezahlt: - + Order State: Bestellstatus: @@ -2270,19 +3322,22 @@ At least %1 Bits of random are required. Veranstaltung + Start Time - Anfangszeit + Anfangszeit + Status - Status + Status + Price - Preis + Preis - + &Mark Order as Shipped... Bestellung als versandt markieren... @@ -2295,53 +3350,83 @@ At least %1 Bits of random are required. Karte zurückgeben... - + + + + + + + + + + + + + + + + + + + Warning Warnung + Unable to get template file (ticket.xtt). Giving up. - Kann Vorlage (ticket.xtt) nicht finden. Gebe auf. + Kann Vorlage (ticket.xtt) nicht finden. Gebe auf. Unable to get template file (bill.odtt). Giving up. Kann Vorlage (bill.odtt) nicht finden. Gebe auf. + + + Mark as shipped? - Als versandt markieren? + Als versandt markieren? + + + Mark this order as shipped now? - Diese Bestellung jetzt als versandt markieren? + Diese Bestellung jetzt als versandt markieren? Unable to get template file (eventsummary.odtt). Giving up. Kann Vorlage (eventsummary.odtt) nicht finden. Gebe auf. + Enter Payment - Zahlbetrag eingeben + Zahlbetrag eingeben + Please enter the amount that has been paid: - Bitte geben Sie den Betrag ein, der bezahlt wurde: + Bitte geben Sie den Betrag ein, der bezahlt wurde: Unable to submit payment request. Kann Bestellung nicht anlegen. + Error while trying to pay: %1 - Fehler während der Bezahlung: %1 + Fehler während der Bezahlung: %1 + Enter Refund - Rückgabe eingeben + Rückgabe eingeben + Please enter the amount that will be refunded: - Bitte geben Sie den Betrag ein, der zurückgegeben wird: + Bitte geben Sie den Betrag ein, der zurückgegeben wird: Unable to submit refund request. @@ -2364,12 +3449,14 @@ At least %1 Bits of random are required. Wollen Sie diese Karte wirklich zurückgeben? + Cancel Order? - Bestellung stornieren? + Bestellung stornieren? + Cancel this order now? - Diese Bestellung jetzt stornieren? + Diese Bestellung jetzt stornieren? Cannot cancel this order: it is in the wrong state. @@ -2380,31 +3467,35 @@ At least %1 Bits of random are required. Kann diese Bestellung nicht stornieren. Schade. - + Delivery Address: Lieferadresse: - Order Comment: - Bestellkommentar: + Bestellkommentar: - Change Commen&t... - Kommen&tar ändern... + Change Sh&ipping Method... + Change Commen&t... + Kommen&tar ändern... Set comment: order %1 Kommentar ändern: Bestellung %1 + + &Save - &Speichern + &Speichern + + &Cancel - &Abbrechen + &Abbrechen &Prune and recheck... @@ -2415,92 +3506,172 @@ At least %1 Bits of random are required. Reservierung durchführen... - + Ch&ange Item-Price... Artikelpreis ändern... - + &Return Item... Artikel zurückgeben... - - Change Sh&ipping Method... - Versandoption ändern... + + Add Commen&t... + + + + + Change C&omments... + - + Print V&ouchers... Gutscheine drucken... - + Print &Current Item... Aktuellen Artikel drucken... - + &View Items... Artikel ansehen... - + + Invoice Address: + + + + Shipping Method: Versandoption: - + Shipping Costs: Versandkosten: + + Order Comments: + + + + Item ID - Artikelnummer: + Artikelnummer: + Description - Beschreibung + Beschreibung + + + + Voucher (current value: %1) + Gutschein (aktueller Wert: %1) - Voucher (current value: %1) - Gutschein (aktueller Wert: %1) + + %1x %2 + + There are no tickets left to print. - Es gibt keine Eintrittskarten zu drucken. + Es gibt keine Eintrittskarten zu drucken. + There are no vouchers left to print. - Es gibt keine Gutscheine zu drucken. + Es gibt keine Gutscheine zu drucken. + Unable to get template file (voucher.xtt). Giving up. - Kann Vorlage (voucher) nicht finden. Gebe auf. + Kann Vorlage (voucher) nicht finden. Gebe auf. + + Unable to get template file (bill). Giving up. - Kann Vorlage (bill) nicht finden. Gebe auf. + Kann Vorlage (bill) nicht finden. Gebe auf. + + + + Error while marking order as shipped: %1 + + + + + Change comments: order %1 + + + + + + There was a problem uploading the new comment: %1 + + + + + Add comment: order %1 + + + + + Error while changing shipping: %1 + Unable to get template file (eventsummary). Giving up. Kann Vorlage (eventsummary) nicht finden. Gebe auf. + Open Document File (*.%1) - ODF Datei (*.%1) + ODF Datei (*.%1) + + + + Error while trying to pay with voucher '%1': %2 + + + + + Successfully paid order %1 with voucher '%2'. +Amount deducted: %3 +Remaining value of this voucher: %4 + + + + + Error while trying to refund: %1 + + Enter Price - Bitte Preis eingeben + Bitte Preis eingeben + Please enter the new price for the ticket: - Bitte neuen Preis für die Eintrittskarte eingeben: + Bitte neuen Preis für die Eintrittskarte eingeben: + + + + Error while attempting to change ticket price: %1 + + Cannot change this item type. - Diese Artikelart kann nicht geändert werden. + Diese Artikelart kann nicht geändert werden. This voucher cannot be returned, it has already been used. @@ -2515,62 +3686,92 @@ At least %1 Bits of random are required. Wollen Sie diesen Gutschein wirklich zurückgeben? + Cannot return this item type. - Diese Artikelart kann nicht zurückgegeben werden. + Diese Artikelart kann nicht zurückgegeben werden. + + + + Return Ticket or Voucher + + + Do you really want to return this ticket or voucher? + + + + + Error whily trying to return item: %1 + + + + + Error while cancelling order: %1 + + + + + Error while changing order status: %1 + + + + Set shipping time - Versandzeit setzen + Versandzeit setzen + Enter the shipping time: - Bitte geben Sie die Versandzeit ein: + Bitte geben Sie die Versandzeit ein: + OK - Ok + Ok + Cancel - Abbrechen + Abbrechen - MoneyLog for Order... - Geldtransfers von Bestellung... + Geldtransfers von Bestellung... - MoneyLog for selected Voucher... - Geldtransfers des selektierten Gutscheins... + Geldtransfers des selektierten Gutscheins... + Enter Voucher - Gutschein eingeben + Gutschein eingeben + Please enter the ID of the voucher you want to use: - Bitte geben Sie die Nummer des Gutscheins ein, den Sie verwenden wollen: + Bitte geben Sie die Nummer des Gutscheins ein, den Sie verwenden wollen: This voucher is not valid. Dieser Gutschein ist nicht gültig. + Voucher Info - Gutscheininformation + Gutscheininformation Remaining value of this voucher: %1 Verbleibender Wert auf dem Gutschein: %1 - This is not a voucher, cannot show the money log. - Dies ist kein Gutschein, kann keine Geldtransfers anzeigen. + Dies ist kein Gutschein, kann keine Geldtransfers anzeigen. - + Pay with &Voucher... Mit Gutschein bezahlen... @@ -2578,189 +3779,189 @@ At least %1 Bits of random are required. MOrdersTab - + -select mode- - + -Modus auswählen- - + All Orders - + Alle Bestellungen - + Open Orders - + Offene Bestellungen - + Open Reservations - + Reservierungen - + Outstanding Payments - + Noch nicht bezahlt - + Outstanding Refunds - + Offene Rückerstattungen - + Undelivered Orders - + Nicht ausgelieferte Bestellungen - + -search result- - + -Suchresultat- - + Update - + Auffrischen - + Details... - + Details... - + Find by Ticket... - + Mit Kartennummer suchen... - + Find by Event... - + Nach Veranstaltung suchen... - + Find by Customer... - + Nach Kunde suchen... - + Find by Order ID... - + Nach Bestellnummer suchen... - + Status - + Status - + Total - + Gesamt - + Paid - + bezahlt - + Customer - + Kunde - - - - - - - - + + + + + + + + Warning - + Warnung - - + + There was a problem retrieving the order list: %1 - - + + Error while retrieving order: %1 - + Enter Ticket - + Bitte Ticket eingeben - + Please enter the ID of one of the tickets of the order you seek: - + Bitte geben Sie die Nr. einer Karte aus der gesuchten Bestellung ein: - + Error while searching for order: %1 - + Order for barcode '%1' not found. - + Select Event - + Veranstaltung auswählen - + Ok - + Ok - + Cancel - + Abbrechen - + Error while retrieving order list: %1 - + Enter Order ID - + Bestellnummer eingeben - + Please enter the ID of the order you want to display: - + Bitte geben Sie die Bestellnummer der Bestellung ein, die Sie ansehen wollen: - + This order does not exist. - + Diese Bestellung existiert nicht. MOverview - + &Session &Session - + &Re-Login &Login wiederholen - + &Close Session Session &schließen @@ -2769,21 +3970,21 @@ At least %1 Bits of random are required. &Veranstaltung - + &Customer &Kunde - + Events Veranstaltungen - - - - - + + + + + Warning Warnung @@ -2800,7 +4001,7 @@ At least %1 Bits of random are required. &Neue Veranstaltung... - + &Show all customers &Alle Kunden anzeigen @@ -2837,7 +4038,7 @@ At least %1 Bits of random are required. Bestellen... - + Shopping Cart Einkaufswagen @@ -2891,9 +4092,8 @@ At least %1 Bits of random are required. &Details anzeigen/editieren... - Users - Nutzer + Nutzer New User... @@ -2916,9 +4116,8 @@ At least %1 Bits of random are required. Rechte... - Hosts - Hosts + Hosts Login Name @@ -2949,7 +4148,7 @@ At least %1 Bits of random are required. Beschreibung von Nutzer %1: - + Change my &Password Mein &Passwort ändern @@ -2998,7 +4197,7 @@ At least %1 Bits of random are required. Nutzer '%1' wirklich löschen? - + Error setting password: %1 Passwort kann nicht gesetzt werden: %1 @@ -3093,7 +4292,7 @@ At least %1 Bits of random are required. Bestellung prüfen - + Order List Bestellungsliste @@ -3150,7 +4349,7 @@ At least %1 Bits of random are required. Die Bestellung ist fehlgeschlagen: %1 - + Entrance Einlasskontrolle @@ -3187,7 +4386,7 @@ At least %1 Bits of random are required. Vorlage &hochladen... - + &Misc &Verschiedenes @@ -3313,7 +4512,7 @@ Die Bestellung ist überbezahlt: es gibt noch Geld zurück. Diese Karte kann nicht zurückgegeben werden: sie wurde bereits benutzt oder befindet sich im falschen Status. - + &Admin &Administration @@ -3322,7 +4521,7 @@ Die Bestellung ist überbezahlt: es gibt noch Geld zurück. &Backupzeit festlegen... - + &Backup now... &Jetzt Backup machen... @@ -3392,81 +4591,96 @@ Die Bestellung ist überbezahlt: es gibt noch Geld zurück. vergangene Veranstaltungen anzeigen - + C&onfigure Konfigurieren - + &Auto-Refresh settings... Auto-Auffrisch-Einstellungen... - + &Display settings... - + + &User Administration... + + + + Refresh Settings Auffrischeinstellungen - + Refresh Rate (minutes): Auffrischrate (Minuten): - + refresh &event list Veranstaltungsliste auffrischen - + refresh &user list Nutzerliste auffrischen - + refresh &host list Rechnerliste auffrischen - - - + + + &OK &Ok - - - + + + &Cancel &Abbrechen - + + No Logging + + + + + Medium Logging + + + + Display Settings - + Maximum event age (days, 0=show all): - + Maximum order list age (days, 0=show all): - + &Edit Templates... Vorlagen ändern... - + &Update Templates Now Vorlagen jetzt auffrischen @@ -3475,17 +4689,17 @@ Die Bestellung ist überbezahlt: es gibt noch Geld zurück. Versandoptionen auffrischen - + Return &ticket... Karte zurückgeben... - + Return &voucher... Gutschein zurückgeben... - + Edit &Shipping Options... Versandoptionen editieren @@ -3538,7 +4752,7 @@ Die Bestellung ist überbezahlt: es gibt noch Geld zurück. Dieser Gutschein kann nicht zurückgegeben werden, er wurde bereits benutzt. - + refresh &shipping list Versandoptionen auffrischen @@ -3559,27 +4773,25 @@ Die Bestellung ist überbezahlt: es gibt noch Geld zurück. Diese Bestellung existiert nicht. - + &Deduct from voucher... Geld von Gutschein abziehen... - &Money Log for voucher... - Geldtransfers von Gutschein... + Geldtransfers von Gutschein... - Money Log for &user... - Geldtransfers von Nutzer... + Geldtransfers von Nutzer... - + &Server Access settings... Serverzugriffseinstellungen... - + Backup &Settings... Einstellungen Sicherungskopie... @@ -3626,32 +4838,32 @@ Value remaining on voucher: %2 Verbleibender Betrag: %2 - + Server Access Settings Serverzugriffseinstellungen - + Request Timeout (seconds): max. Anfragezeit (Sekunden): - + Log Level: Logstufe: - + Minimal Logging Minimales Log - + Log Details on Error Bei Fehlern Details - + Always Log Details Immer Details @@ -3660,17 +4872,17 @@ Verbleibender Betrag: %2 Sicherung ist fehlgeschlagen: %1 - + Backup Sicherung - + The backup was successful. Die Sicherung war erfolgreich. - + Cannot create backup file. Kann Sicherungsdatei nicht anlegen. @@ -3691,17 +4903,17 @@ Verbleibender Betrag: %2 Bitte den Login-Namen des Nutzers eingeben um die Transaktionen anzuzeigen: - + I was unable to renew the login at the server. - + Backup failed with error (%2): %1 - + Backup returned empty. @@ -3745,52 +4957,204 @@ Verbleibender Betrag: %2 + MPriceCategoryDialog + + + Select a Price Category + + + + + New... + new price category + Neu... + + + + Select + select price category + Auswählen + + + + + Cancel + Abbrechen + + + + New Price Category + + + + + Category Name: + + + + + Category Abbreviation: + + + + + Create + + + + + Warning + Warnung + + + + Error while creating new price category: %1 + + + + + MRoleTab + + + New Role... + + + + + Delete Role... + + + + + Change Description... + + + + + Edit Flags... + + + + + Edit Rights... + + + + + Role Name + + + + + Description + Beschreibung + + + + Create New Role + + + + + Please enter a role name: + + + + + + + + Warning + Warnung + + + + Error while trying to create role: %1 + + + + + Delete this Role? + + + + + Really delete role '%1'? + + + + + Error while trying to delete role: %1 + + + + + Edit Description + Beschreibung ändern + + + + Description of role %1: + + + + + Cannot retrieve role: %1 + + + + + Cannot retrieve right list: %1 + + + + MSInterface - + Warning Warnung - + Login failed: %1 - - - + + + Error Fehler - + Communication problem while talking to the server, see log for details. - + Communication with server was not successful. - + The server implementation is too old for this client. - + This client is too old for the server, please upgrade. - + Connection Error - + There were problems while authenticating the server. Aborting. Check your configuration. @@ -3806,32 +5170,32 @@ Verbleibender Betrag: %2 MShippingChange - + Change Shipping Method Versandoption ändern - + Method: Option: - + Price: Preis: - + Ok Ok - + Cancel Abbrechen - + (None) shipping method (Keine) @@ -3840,67 +5204,67 @@ Verbleibender Betrag: %2 MShippingEditor - + Edit Shipping Options Versandoptionen editieren - + Change Description Beschreibung ändern - + Change Price Preis ändern - + Change Availability Verfügbarkeit ändern - + Add Option Option hinzufügen - + Delete Option Option löschen - + Ok Ok - + Cancel Abbrechen - + ID ID - + Description Beschreibung - + Price Preis - + Web Web - + Any User Jeder Nutzer @@ -4080,17 +5444,17 @@ Verbleibender Betrag: %2 MTemplateStore + Retrieving templates from server. - Hole Vorlagen vom Server. + Hole Vorlagen vom Server. MTicket - . decimal dot - , + , bought @@ -4182,144 +5546,144 @@ Verbleibender Betrag: %2 MUserTab - + New User... - + Neuer Nutzer... - + Delete User... - + Nutzer löschen... - + Description... - + Beschreibung.,. - + Hosts... - + Hosts... - + Roles... - + Rollen... - + Set Password... - + Passwort setzen... - + Login Name - + Loginname - + Description - + Beschreibung - + New User - + Neuer Nutzer - + Please enter new user name (only letters, digits, and underscore allowed): - + Neuen Nutzernamen eingeben (Kleinbuchstaben, Ziffern, Unterstrich, Minus): - - + + Error - + Fehler - + The user name must contain only letters, digits, dots and underscores and must be at least one character long! - + Nutzernamen dürfen nur Kleinbuchstaben, Ziffern, Punkte, Bindestriche und Unterstriche enthalten und müssen mindestens ein Zeichen lang sein! - + Password - + Passwort - + Please enter an initial password for the user: - + Bitte geben Sie ein intiales Passwort ein: - + Delete User? - + Nutzer löschen? - + Really delete user '%1'? - + Nutzer '%1' wirklich löschen? - + (Nobody) this is a username for no user, the string must contain '(' to distinguish it from the others - + (Niemand) - + Delete User - + Nutzer Löschen - + Select which user will inherit this users database objects: - + Bitte wählen Sie einen Nutzer, der die Datenbankobjekte des gelöschten Nutzers erbt: - + Cannot delete user: %1 - + Kann Nutzer nicht löschen: %1 - + Edit Description - + Beschreibung ändern - + Description of user %1: - + - - - - + + + + Warning - + Warnung - + Cannot retrieve user roles: %1 - + Kann Nutzerrollen nicht abfragen: %1 - + Cannot retrieve role descriptions: %1 - + Kann Rollenbeschreibung nicht abfragen: %1 - + The password must be non-empty and both lines must match - + Das Passwort darf nicht leer sein und beide Zeilen müssen übereinstimmen. - + Error while setting password: %1 - + Fehler beim Setzen des Passwortes: %1 @@ -4851,17 +6215,17 @@ Verbleibender Betrag: %2 WTransaction - + interface not found - + Web Request timed out. - + HTTP Error, return code %1 %2 @@ -4871,26 +6235,46 @@ Verbleibender Betrag: %2 - + + + - - - + + + + + + + + + + + - + + + + + + + + + + + @@ -4899,98 +6283,130 @@ Verbleibender Betrag: %2 + + + + - + + + + + + + + + + + + XML result parser error line %1 col %2: %3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Class '%1' property '%2' is integer, but non-integer was found. - - - - - - - + + + + + + + + Class '%1' property '%2' is enum, invalid value was found. diff --git a/src/smoke_de_SAX.ts b/src/smoke_de_SAX.ts index 9913f00..6bcee1e 100644 --- a/src/smoke_de_SAX.ts +++ b/src/smoke_de_SAX.ts @@ -2,39 +2,237 @@ + MAclWindow + + + MagicSmoke ACL Editor [%1@%2] + + + + + &Window + + + + + &Close + &Schließen + + + + Users + Nudsor + + + + Roles + + + + + Hosts + Reschnor + + + + MAddressChoiceDialog + + + Chose an Address + + + + + Add Address + + + + + Cancel + + + + + Warning + Dumm gelaufen + + + + Unable to save changes made to addresses: %1 + + + + + MAddressDialog + + + Edit Address + + + + + Create Address + + + + + Last used: + + + + + Name: + Dor Name: + + + + + Address: + De Adresse: + + + + City: + + + + + State: + + + + + ZIP Code: + + + + + Country: + + + + + + Ok + Is gud so. + + + + + Cancel + + + + + Create New Country... + must contain leading space to distinguish it from genuine countries + + + + + Select Country + + + + + Please select a country: + + + + + Create New Country + + + + + Country Name: + + + + + Abbreviation: + + + + + + Warning + Dumm gelaufen + + + + The country name and abbreviation must contain something! + + + + + Error while creating country: %1 + + + + + MAddressWidget + + + Select + + + + + Edit + + + + + Delete + + + + + Delete Address + + + + + Really delete this address? +%1 + + + + MAppStyleDialog - + Application Style - + GUI Style: - + System Default - + Stylesheet: - + Ok - + Is gud so. - + Cancel - + Select Stylesheet @@ -60,47 +258,47 @@ MBackupDialog - + Backup Settings - + Backup File: - + ... - + Generations to keep: - + Automatic Backup: - + Interval in days: - + &OK Nu &glar! Nehm'sch. - + &Cancel &Nee lass mal. - + Backup File @@ -110,418 +308,604 @@ Add Ticket - + Eindriddsgarde hinzufüchen Add Voucher - + Gudschein hinzufüchen - Remove Item + Add Shop Item + Remove Item + + + + + Remove Line - + Customer: + Gunde: + + + + Invoice Address: - + Shipping Method: - + Versandmedode: - + Delivery Address: - + Adresse wo's Zeuch hin soll: - + Comments: - + Wischdiches Gelaber und Gerede: - + Order - + Reserve - + Clear - + Wechwerfen und von vorne! - - C&art - + + Add &Ticket + Ein&driddsgarde hinzufüchen - - Add &Ticket + + Add &Voucher + &Gudschein hinzufüchen + + + + Ca&rt - - Add &Voucher + + Add &Shop-Item - - &Remove Item + + &Remove Line - + &Abort Shopping - + &Eingauf Abbrechen - + &Update Shipping Options - + Jedsd soford Versandmedoden nachguggn - + (No Shipping) - + (gar gee Vorsand) - + Amount - + Anzahl - + Title - + Diddel - + Start Time + Anfangszeit + + + + Price + Breis + + + + + + + + + + Warning + Dumm gelaufen + + + + Please set the customer first. - + Select Event to order Ticket - + Wähl ma ne Voranschdaldung aus um ne Garde zu beschdelln - + Select - + + + Cancel - - - MCentDialog - - OK + + Error getting event, please try again. - - Cancel + + This event has no prices associated. Cannot sell tickets. - - - MCheckDialog - - - Ok - Is gud so. - - - Cancel - Abbreschen + + Select Price Category + - - - MConfigDialog - - Magic Smoke Configuration + + Please chose a price category: - - &Profile - + + + Ok + Is gud so. - - &New Profile... - + + Select Voucher + Gudschein auswähln - - &Delete Profile - + + Select voucher price and value: + Beschdimm mal 'n Gudscheinpreis und -werd: - - &Rename Profile - + + Price: + Breis: - - C&lone Profile - + + Value: + Werd: - - &Make Default Profile + + Voucher (value %1) - - &Export Host Key... + + There are problems with the contents of the cart, please check and then try again. - - &Import Host Key... - + + + Error + Gans doller falschor Fehler - - &Generate Host Key... - + + There is nothing in the order. Ignoring it. + Da is doch gar nischd drin. Isch mach das jedsd ni! - - &Close Window - + + Please chose a customer first! + Du mussd schon nen Gunden auswähln, sonsd wees isch doch ni wer's griechen soll! - - &Settings + + Shipping - - &Language... + + You have chosen a shipping method, but no address. Are you sure you want to continue? - - &OpenOffice.org Settings... + + Reservations can only contain tickets. - - Set &Default Label Font... + + Error while creating reservation: %1 - - Set &Application Style... + + Error while creating order: %1 - - Connection + + The customer is not valid, please chose another one. - - Server URL: + + The delivery address is not valid, please chose another one. - - Proxy: + + The invoice address is not valid, please chose another one. - - Proxy Username: + + Shipping Type does not exist or you do not have permission to use it. - - Proxy Password: + + The event is already over, please remove this entry. - - Authentication + + You cannot order tickets for this event anymore, ask a more privileged user. - - Hostname: + + The event is (almost) sold out, there are %1 tickets left. - - Hostkey: + + The event does not exist or there is another serious problem, please remove this entry. - - Default Username: + + You do not have permission to create vouchers with this value, please remove it. - - SSL Exceptions + + The price tag of this voucher is not valid, please remove and recreate it. - - + + + MCentDialog + + + OK + + + + + Cancel + + + + + MCheckDialog + + + Ok + Is gud so. + + + + Cancel + Abbreschen + + + + MConfigDialog + + + Magic Smoke Configuration + + + + + &Profile + + + + + &New Profile... + &Neues Brofiel + + + + &Delete Profile + + + + + &Rename Profile + + + + + C&lone Profile + + + + + &Make Default Profile + + + + + &Export Host Key... + Rechnorschlüssel &eggsbordiern... + + + + &Import Host Key... + Reschnorschlüssel &imbordiern... + + + + &Generate Host Key... + Rechnorschlüssel &orzeuchen... + + + + &Close Window + Fänsdor &zumach'n + + + + &Settings + + + + + &Language... + &Schbrache... + + + + &OpenOffice.org Settings... + + + + + Set &Default Label Font... + + + + + Set &Application Style... + + + + + Connection + + + + + Server URL: + URL vom diggen Reschnor: + + + + Proxy: + Web-Broggsie: + + + + Proxy Username: + Nudsername für'n Broggsie: + + + + Proxy Password: + Geheimer Gohd für'n Broggsie: + + + + Authentication + + + + + Hostname: + + + + + Hostkey: + + + + + Default Username: + + + + + SSL Exceptions + + + + List of non-fatal SSL exceptions: - + Clear - + Wechwerfen und von vorne! - + Probe Server - - + + New Profile - + Neues Brofiel - - - + + + Please enter a profile name. It must be non-empty and must not be used yet: - + Bidde gäben'se 'nen Namen für das neue Brofiel ein. Der darf noch ni' benudsd sein und leer darf'or och nedd sein: - + Rename Profile - - - - - - - - - + + + + + + + + + Warning - + Dumm gelaufen - + This profile name is already in use. - + Generate Hostkey - + Do you really want to generate a new host key for this profile? This may disable all accounts from this host. - + Export Key to File - + Schlüssel als Dadei ablechen - + Unable to open file %1 for writing: %2 - + Gann de Dadai %1 nicht zum Schreiben offmachen weil: %2 - + Importing a key overwrites the host key that is currently used by this profile. This may disable your accounts. Do you still want to continue? - + Import Key from File - + Schlüssel aus nor Dadai holen - + Unable to open file %1 for reading: %2 - + Gann de Dadai %1 nisch lesen. Des iss jedsd geene Ordografieschwäche, sondern: %2 - - + + This is not a host key file. - + Das is abor doch gar ge Schlüssel! Willsde misch verarschen? - + This host key file does not contain a valid host name. - + De Schlüsseldadai had nen gans seldsamen Reschnornamen da drin. Desdorweschen gannsch die ni nehm. - + This host key file does not contain a valid key. - + De Dadai is a bissl gabudd. Die mussde nochmal holen, ich gann die so ned lesen. - + The key check sum did not match. Please get a clean copy of the host key file. - + Isch hab da ma nachgereschned. De Scheggsumme vom Schlüssel is falsch. Das gannsch Dir so ni abnehm. - + Chose Default Font - + Please chose a default font: - - + + Server Probe - + The request finished without errors. - + The request finished with an error: %1 - + SSL Errors encountered: - + Certificate "%1" Fingerprint (sha1): %2 Error: %3 @@ -529,148 +913,262 @@ - + Accept connection anyway? - + SSL Warning - + Common Name - + SHA-1 Digest - + Error Type + MContactTableDelegate + + + (New Contact Type) + + + + + Create new Contact Type + + + + + Contact Type Name: + + + + + Contact Type URI Prefix: + + + + + Ok + Is gud so. + + + + Cancel + + + + + Warning + Dumm gelaufen + + + + Error while creating contact type: %1 + + + + MCustomerDialog - + Customer %1 Gunde %1 - + New Customer Neier Gunde - + + Customer + Gunde + + + Name: Dor Name: - Address: - De Adresse: + De Adresse: - Contact Information: - Wie mor den erreischen gann: + Wie mor den erreischen gann: - + Web-Login/eMail: Wie er sisch im Web anmelden gann: - + + Edit Login + + + + Comment: Gommendar: - + + Addresses + + + + + Add Address + + + + + Contact Information + + + + + Add + + + + + Remove + + + + + Type + table: contact type + + + + + Contact + table: contact info + + + + Save Schbeichorn - + Cancel Doch ni' machen + + + First Name: + + + + + Title: + Diddel: + + + + + Warning + Dumm gelaufen + + + + Error while changing customer data: %1 + + + + + Error while creating customer data: %1 + + MCustomerListDialog - + Select a Customer Gunde auswählen - + Customers Gunden - + Details... Dedails anzeichen... - + Create new... Neuen anlechen... - + Delete... Wechschmeißen... - + Select Auswählen - + Cancel Mach ma ni' - + Close Zumachn - + Delete Customer Gunden Löschn - + Really delete this customer (%1)? Willsde den Gunden wirschlich löschen? Has'de Dir das och gud üborleschd? Das ist dor %1. - + merge with other entry: Mid 'nem andorn Eindrag zusamm'lechn: - + &Yes &Nu glar! - + &No Nee &Lass ma! - + Error Gans doller falschor Fehler @@ -679,129 +1177,362 @@ Gann den Gunden ni löschen. Gomm'se morchen nochma'. - + Failed to delete customer: %1 Gann den Gunden "%1" ni löschen. Gomm'se morchen nochma'. - MEntranceTab + MEEPriceEdit - - Enter or scan Ticket-ID: + + Change Price + Breis ändorn + + + + Price category: - - - MEvent - Event is not complete, cannot save. - De Veranschdaldung is ni gombledd, das gansch so ni abschiggn. + + Price: + Breis: - - [0-9]+\.[0-9]{2} + + Maximum Seats: + + + + + Ok + Is gud so. + + + + Cancel + + + + + MEntranceTab + + + Enter or scan Ticket-ID: + + + + + Open Order + + + + + Total: + + + + + Used: + + + + + Unused: + + + + + Reserved: + + + + + searching... + entrance control + + + + + Ticket "%1" Not Valid + De Garde "%1" is ni güldsch. + + + + Ticket "%1" is not for this event. + + + + + Ticket "%1" has already been used + De Garde "%1" wurde schonma benudsd. + + + + Ticket "%1" has not been bought. + De Garde "%1" wurde ni gegauft. + + + + Ticket "%1" Ok + De Garde "%1" is in Ordnung. + + + + Ticket "%1" is not paid for! + De Garde "%1" is abor ni bedsahld! + + + + Ticket "%1" cannot be accepted, please check the order! + De Garde "%1" gönnmor so abor ni agsebdiern. Schegg ma' de Beschdellung! + + + + Warning + Dumm gelaufen + + + + Error while retrieving order: %s + + + + + MEvent + + Event is not complete, cannot save. + De Veranschdaldung is ni gombledd, das gansch so ni abschiggn. + + + [0-9]+\.[0-9]{2} price validator regexp - [0-9]+,[0-9]{2} + [0-9]+,[0-9]{2} - - . price decimal dot - , + , - - yyyy-MM-dd hh:mm ap date/time format - ddd, d.M.yyyy hh:mm + ddd, d.M.yyyy hh:mm - yyyy-MM-dd date format - d.M.yyyy + d.M.yyyy MEventEditor - + Event Editor Voranschdaldungsvorwurschdler + Event + Veranschdaldung + + + Title: Diddel: - + Artist: Günsdlor: - Description: - Beschreibung: + Beschreibung: - + Start Time: 'S fängd an: - - + + ddd MMMM d yyyy, h:mm ap time format ddd, d.M.yyyy hh:mm - + End Time: 'S hörd off: - + Room/Place: 'S bassierd hier: - + Capacity: Magsimale Gäsde: - Default Price: - Gardenbreis: + Gardenbreis: - + Event Cancelled: Voranschaldung absachn: - + + Description + Beschreibung + + + + The description will be displayed on the web site, please use HTML syntax. + + + + + Comment + + + + + The comment is for internal use only, please add any hints relevant for your collegues. + + + + + Prices + + + + + Change Price + Breis ändorn + + + + Add Price + + + + + Remove Price + + + + Save Schbeichorn - - + + Close + Zumachn + + + + Error while creating event: %1 + + + + + Error while changing event: %1 + + + + + Price Category + + + + + Price + Breis + + + + Ticket Capacity + + + + + Tickets + Garden + + + + Seats Blocked + + + + + Cannot remove price '%1' - it has tickets in the database. + + + + + Cancel Ne' schbeichorn - + + Error while creating new room: %1 + + + + + Select an Artist + + + + + New... + new artist + Neier Raum... + + + + Select + select artist + + + + + New Artist + + + + + Name of new artist: + + + + + Error while creating new artist: %1 + + + + + + + + + Warning Dumm gelaufen - + Unable to load event from server. Gann de Voranschdaldung ni' offm Reschnor findn'. @@ -810,32 +1541,34 @@ Isch gann de Voranschdaldung ni hochladen: %s - + Select a Room Raum anlechen - + New... new room Neier Raum... - + Select select room Auswählen + New Room - Neier Raum + Neier Raum + Name of new room: - Name vom dem Raum: + Name vom dem Raum: - + ID: Nummor: @@ -843,22 +1576,22 @@ MEventSummary - + Summary for Event %1 Zusamm'fassung für de Veranschdaldung %1 - + Title: Diddel: - + Artist: Günsdlor: - + Start: Da gehds los: @@ -868,271 +1601,735 @@ ddd, d.M.yyyy hh:mm - + Capacity: Magsimale Gäsde: - + Tickets currently reserved: Garden die resorvierd sind: - + Tickets currently cancelled: Garden die zurüggegeben wurd'n: - + Tickets currently usable: Garden die genudsd werden gönn': - - Total Income: - Summe dor Einnahm'n: + + Total Income: + Summe dor Einnahm'n: + + + . + decimal dot + , + + + + Price + Breis + + + + Bought + Gegaufd + + + + Used + Benudsd + + + + Unused + Unbenudsd + + + + Print + Druggn + + + + Save as... + Schbeichorn undor... + + + + Close + Zumachn + + + + + + Warning + Dumm gelaufen + + + Unable to get template file (eventsummary.odtt). Giving up. + Gann de Vorlache (eventsummary.odtt) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + + + Summary + Zusamm'fassung + + + + Tickets + Garden + + + + Comments + Gommendare + + + + Order: + Beschdellung: + + + + Customer: + Gunde: + + + + Error while retrieving data: %1 + + + + + + Unable to get template file (eventsummary). Giving up. + Gann de Vorlache (eventsummary) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + + + Open Document File (*.%1) + ODF Dadai (*.%1) + + + + MEventsTab + + + New Event... + Neue Veranschdaldung... + + + + Details... + Dedails anzeichen... + + + + Order Ticket... + Eindriddsgarde beschdellen... + + + + Event Summary... + Veranschdaldungszusammenfassung... + + + + Cancel Event... + Veranschdaldung absach'n... + + + + &Event + &Veranschdaldung + + + + &Update Event List + &Voranschdaldungsliste nochma holen + + + + &Show/Edit details... + &Dedails anzeichen... + + + + &New Event... + Veranschdaldung &absach'n... + + + + Show &old Events + Aldes Zeuch zeichen + + + + Start Time + Anfangszeit + + + + Title + Diddel + + + + Free + Frei + + + + Reserved + Resorvierd + + + + Sold + Vergaufd + + + + Capacity + Magsimale Gäsde + + + + ddd MMMM d yyyy, h:mm ap + time format + ddd, d.M.yyyy hh:mm + + + + Cancel Event + Veranschdaldung absach'n + + + + Please enter a reason to cancel event "%1" or abort: + Nu' gib mir ma'n rischdsch guden Grund warum Du de Veranschdaldung "%1" absachn willsd oder lass'es sein: + + + + Event Cancelled + Veranschaldung abgesachd + + + + The event "%1" has been cancelled. Please inform everybody who bought a ticket. + De Veranschdaldung "%1" wurde abgesacht. Bidde sorsch ma dafür dass och jedor Bescheid wees. + + + + Warning + Dumm gelaufen + + + + Unable to cancel event "%1": %2. + + + + + MHostTab + + + New Host... + Neier Reschnor... + + + + Add This Host... + Die Gisde hier hinzufüchen... + + + + Delete Host... + Reschnor löschen... + + + + Generate New Key... + Neien Schlüssel erzeuchen... + + + + Import... + Imbordieren... + + + + Export... + Eggsbordieren... + + + + Host Name + Reschnorname + + + + Host Key + Reschnorschlüssel + + + + MInterface + + + Backup + + + + + GetLanguage + + + + + ServerInfo + + + + + Login + Droff offn' Reschnor + + + + Logout + + + + + GetMyRoles + + + + + GetMyRights + + + + + ChangeMyPassword + + + + + GetAllUsers + + + + + CreateUser + + + + + ChangePassword + + + + + DeleteUser + + + + + SetUserDescription + + + + + GetUserRoles + + + + + SetUserRoles + + + + + GetAllRoles + + + + + GetRole + + + + + CreateRole + + + + + SetRoleDescription + + + + + SetRoleRights + + + + + DeleteRole + + + + + GetAllRightNames + + + + + GetAllHostNames + + + + + GetAllHosts + + + + + SetHost + + + + + DeleteHost + + + + + GetUserHosts + + + + + SetUserHosts + + + + + GetAllContactTypes + + + + + CreateContactType + + + + + GetCustomer + + + + + GetAllCustomerNames + + + + + CreateCustomer + + + + + ChangeCustomer + + + + + DeleteCustomer + + + + + GetAddress + + + + + GetAllCountries + + + + + CreateCountry + + + + + GetAllArtists + + + + + CreateArtist + + + + + GetAllPriceCategories + + + + + CreatePriceCategory + - . - decimal dot - , + + GetEvent + - - Price - Breis + + GetAllEvents + - - Bought - Gegaufd + + GetEventList + - - Used - Benudsd + + CreateEvent + - - Unused - Unbenudsd + + ChangeEvent + - - Print - Druggn + + CancelEvent + - - Save as... - Schbeichorn undor... + + GetAllRooms + - - Close - Zumachn + + CreateRoom + - Warning - Dumm gelaufen + + GetEventSummary + - Unable to get template file (eventsummary.odtt). Giving up. - Gann de Vorlache (eventsummary.odtt) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + GetTicket + - - Summary - Zusamm'fassung + + GetVoucher + - - Tickets - Garden + + GetOrder + - - Comments - Gommendare + + GetOrderList + - - Order: - Beschdellung: + + GetOrdersByEvents + - - Customer: - Gunde: + + GetOrdersByCustomer + - Unable to get template file (eventsummary). Giving up. - Gann de Vorlache (eventsummary) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + GetOrderByBarcode + - Open Document File (*.%1) - ODF Dadai (*.%1) + + CreateOrder + - - - MEventsTab - - New Event... + + CreateReservation - - Details... + + ReservationToOrder - - Order Ticket... + + CancelOrder - - Event Summary... + + OrderPay - - Cancel Event... + + OrderRefund - - &Event + + UseVoucher - - &Update Event List + + OrderChangeShipping - - &Show/Edit details... + + OrderMarkShipped - - &New Event... + + OrderAddComment - - Show &old Events + + OrderChangeComments - - Start Time + + ReturnTicketVoucher - - Title + + ChangeTicketPrice - - Free + + GetAllShipping - - Reserved + + GetValidVoucherPrices - - Sold + + UseTicket - - Capacity + + GetEntranceEvents - - ddd MMMM d yyyy, h:mm ap - time format + + GetTemplateList - - Cancel Event + + GetTemplate - - Please enter a reason to cancel event "%1" or abort: + + ChangeEvent:CancelEvent - - Event Cancelled + + CreateOrder:AnyVoucherValue - - The event "%1" has been cancelled. Please inform everybody who bought a ticket. + + CreateOrder:DiffVoucherValuePrice - - Warning + + CreateOrder:LateSale - - Unable to cancel event "%1": %2. + + CreateOrder:AfterTheFactSale - - - MHostTab - - New Host... + + CreateReservation:LateReserve - - Add This Host... + + CancelOrder:CancelSentOrder - - Delete Host... + + CancelOrder:CancelPastTickets - - Generate New Key... + + OrderChangeShipping:ChangePrice - - Import... + + OrderMarkShipped:SetTime - - Export... + + ReturnTicketVoucher:ReturnPastTicket - - Host Name + + ChangeTicketPrice:ChangeUsedTicket - - Host Key + + ChangeTicketPrice:ChangePastTicket @@ -1249,7 +2446,7 @@ At least %1 Bits of random are required. &File - + &Dadai @@ -1259,7 +2456,7 @@ At least %1 Bits of random are required. &Configure - + &Gonfiguriern @@ -1269,27 +2466,27 @@ At least %1 Bits of random are required. Profile: - + Brofiel: Username: - + Nudsorname: Password: - + Gans doll geheimer Gohd: Login - + Droff offn' Reschnor Warning - + Dumm gelaufen @@ -1447,501 +2644,356 @@ At least %1 Bits of random are required. MMoneyLog - - Money Log of %1 %2 - - - - Close - Zumachn + Zumachn MOCartOrder - - + + Ok ok - - - - - - SaleOnly - saleonly - - - - - - OrderOnly - orderonly - + Is gud so. + - Invalid invalid - - - - Ok - - - - - - SaleOnly - - - - - - OrderOnly - - - - - - Invalid - - MOCartTicket - - + + Ok ok - - - - - - TooLate - toolate - - - - - - Exhausted - exhausted - - - - - - SaleOnly - saleonly - - - - - - OrderOnly - orderonly - + Is gud so. - Ok + EventOver TooLate + toolate Exhausted + exhausted - SaleOnly - - - - - - OrderOnly + Invalid MOCartVoucher - - + + Ok ok - - - - - - InvalidValue - invalidvalue - - - - - - InvalidPrice - invalidprice - + Is gud so. - Ok + InvalidValue + invalidvalue - InvalidValue - - - - - InvalidPrice + invalidprice - MOOrderAbstract - - - - Placed - placed - - - - - - Sent - sent - - - - - - Sold - sold - - - - - - Cancelled - cancelled - - - - - - Reserved - reserved - - - - - - Closed - closed - - + MOEvent - - - Placed - + + [0-9]+\.[0-9]{2} + price validator regexp + [0-9]+,[0-9]{2} - - - Sent - + + . + price decimal dot + , - - - Sold - + + + yyyy-MM-dd hh:mm ap + date/time format + ddd, d.M.yyyy hh:mm - - - Cancelled - + + yyyy-MM-dd + date format + d.M.yyyy + + + MOOrder - - - Reserved - + + + yyyy-MM-dd hh:mm ap + date/time format + ddd, d.M.yyyy hh:mm - - - Closed - + + + yyyy-MM-dd + date format + d.M.yyyy - MOOrderInfoAbstract + MOOrderAbstract - - + + Placed placed - - + + Sent sent - - + + Sold sold - + Vergaufd - - + + Cancelled cancelled - - + + Reserved reserved - + Resorvierd - - + + Closed closed + + + MOOrderInfoAbstract + + + + Placed + placed + + - Placed + Sent + sent - Sent - + Sold + sold + Vergaufd - Sold + Cancelled + cancelled - Cancelled - + Reserved + reserved + Resorvierd - Reserved - - - - - Closed + closed MOTicketAbstract - - + + Reserved reserved - + Resorvierd - - + + Ordered ordered - - + + Used used - + Benudsd - - + + Cancelled cancelled - - + + Refund refund - - + + MaskBlock maskblock - - + + MaskPay maskpay - - + + MaskUsable maskusable - - + + MaskReturnable maskreturnable - - - Reserved - - - - - - Ordered + + + MaskChangeable + + + MOTicketUse - - - Used - + + + Ok + Is gud so. - - - Cancelled + + + NotFound - - - Refund + + + WrongEvent - - - MaskBlock + + + AlreadyUsed - - - MaskPay + + + NotUsable - - - MaskUsable + + + Unpaid - - - MaskReturnable + + + InvalidEvent - MOVoucher - - - - Ok - ok - - - - - - InvalidValue - invalidvalue - - - - - - InvalidPrice - invalidprice - - + MOVoucherAbstract - - + + Ok - + Is gud so. - - + + InvalidValue - - + + InvalidPrice @@ -2078,18 +3130,14 @@ At least %1 Bits of random are required. , - - yyyy-MM-dd hh:mm ap date/time format - ddd, d.M.yyyy hh:mm + ddd, d.M.yyyy hh:mm - - yyyy-MM-dd date format - d.M.yyyy + d.M.yyyy This ticket is not part of this order. @@ -2128,17 +3176,17 @@ At least %1 Bits of random are required. MOrderItemView - + Preview Tickets Garden anguggn. - + Ticket: Garde: - + Voucher: Gudschein: @@ -2146,17 +3194,17 @@ At least %1 Bits of random are required. MOrderWindow - + Order Details Beschdelldedails - + &Order &Beschdellen - + &Order... &Beschdellen... @@ -2165,47 +3213,47 @@ At least %1 Bits of random are required. &Vorgofen... - + C&ancel Order... Beschdellung &abbreschn... - + &Close &Schließen - + &Payment Bed&sahlung - + Receive &Payment... &Bedsahln... - + &Refund... &Zurüggeben... - + P&rinting &Druggn - + Print &Bill... &Reschnung druggn... - + Save Bill &as file... Reschnung als Dadai &schbeichorn... - + Print &Tickets... &Garden druggn... @@ -2218,42 +3266,42 @@ At least %1 Bits of random are required. Gar&den anguggn... - + Order ID: Beschdellnummer: - + Order Date: Beschdelldadum: - + Shipping Date: Versanddadum: - + Customer: Gunde: - + Sold by: Vergaufd von: - + Total Price: Endvorbraucherbreis: - + Already Paid: Schon bedsahld: - + Order State: Beschdellschdadus: @@ -2266,19 +3314,22 @@ At least %1 Bits of random are required. Veranschdaldung + Start Time - Anfangszeit + Anfangszeit + Status - Schdadus + Schdadus + Price - Breis + Breis - + &Mark Order as Shipped... Beschdellung is weschgeschiggd... @@ -2291,53 +3342,83 @@ At least %1 Bits of random are required. Garde zurüggeben... - + + + + + + + + + + + + + + + + + + + Warning Dumm gelaufen + Unable to get template file (ticket.xtt). Giving up. - Gann de Vorlache (ticket.xtt) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + Gann de Vorlache (ticket.xtt) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. Unable to get template file (bill.odtt). Giving up. Gann de Vorlache (bill.xtt) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + + Mark as shipped? - Als wechgeschiggd margieren? + Als wechgeschiggd margieren? + + + Mark this order as shipped now? - Als wechgeschiggd margieren? Also jedsd. Rischdisch weg? Beim Gunden? + Als wechgeschiggd margieren? Also jedsd. Rischdisch weg? Beim Gunden? Unable to get template file (eventsummary.odtt). Giving up. Gann de Vorlache (eventsummary.odtt) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + Enter Payment - Geldbedrach eingeben + Geldbedrach eingeben + Please enter the amount that has been paid: - Bidde den Bedrach eingebn der bedsahld wurde: + Bidde den Bedrach eingebn der bedsahld wurde: Unable to submit payment request. Gann de Bedsahlung nisch schbeischorn. De Gommunisdn wolln das Neds vom Geld frei haldn. + Error while trying to pay: %1 - 'S is bleede, abor da war'n Fehlor beim bedsahln: %1 + 'S is bleede, abor da war'n Fehlor beim bedsahln: %1 + Enter Refund - Rügggabe eingäben + Rügggabe eingäben + Please enter the amount that will be refunded: - Bidde den Bedrach eingebn der zurüggegebn wurde: + Bidde den Bedrach eingebn der zurüggegebn wurde: Unable to submit refund request. @@ -2360,12 +3441,14 @@ At least %1 Bits of random are required. Wolln'se de Garde wirschlisch zurüggeben? S'wär schade drum. + Cancel Order? - Beschdellung abbreschn? + Beschdellung abbreschn? + Cancel this order now? - De Beschdellung jedsd wirschlich abbreschn? S'gibd dann kee zurüg mehr - also ni rumheuln! + De Beschdellung jedsd wirschlich abbreschn? S'gibd dann kee zurüg mehr - also ni rumheuln! Cannot cancel this order: it is in the wrong state. @@ -2376,31 +3459,35 @@ At least %1 Bits of random are required. Gann de Beschdellung ni abbreschn. - + Delivery Address: Adresse wo's Zeuch hin soll: - Order Comment: - Beschdellgommendar: + Beschdellgommendar: - Change Commen&t... - Gommendar ändorn... + Change Sh&ipping Method... + Change Commen&t... + Gommendar ändorn... Set comment: order %1 Gommendar ändorn: Beschdellung %1 + + &Save - &Schbeichorn + &Schbeichorn + + &Cancel - &Nee lass mal. + &Nee lass mal. &Prune and recheck... @@ -2411,92 +3498,237 @@ At least %1 Bits of random are required. Nu da resorviern wor's hald ersdma!... - + Ch&ange Item-Price... Vom margierden den Breis ändorn... - + &Return Item... Das margierde Ding zurüggeben... - + + Add Commen&t... + + + + + Change C&omments... + + + + Change Sh&ipping Method... Versandmedode ändorn... - - Print V&ouchers... - Gudscheine Druggn... + + Print V&ouchers... + Gudscheine Druggn... + + + + Print &Current Item... + Margierdes druggen... + + + + &View Items... + Alles ma genau anguggn... + + + + Invoice Address: + + + + + Shipping Method: + Versandmedode: + + + + Shipping Costs: + Versandgosden: + + + + Order Comments: + + + + + Item ID + De Nummor + + + + Description + Beschreibung + + + + Voucher (current value: %1) + Gudschein (agduell issor %1 werd) + + + + %1x %2 + + + + + There are no tickets left to print. + Eivorbübbschd, da ist gehne Garde, die mor druggn gönn'. + + + + There are no vouchers left to print. + Eivorbübbschd, da ist gehn Gudschein, den mor druggn gönn'. + + + + Unable to get template file (voucher.xtt). Giving up. + Gann de Vorlache (voucher) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + + + + Unable to get template file (bill). Giving up. + Gann de Vorlache (bill) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + + + Return Ticket or Voucher + + + + + Do you really want to return this ticket or voucher? + + + + + Error whily trying to return item: %1 + + + + + Error while cancelling order: %1 + + + + + Error while changing order status: %1 + + + + + Set shipping time + + + + + Enter the shipping time: + + + + + OK + + + + + Cancel + - - Print &Current Item... - Margierdes druggen... + + Error while marking order as shipped: %1 + - - &View Items... - Alles ma genau anguggn... + + Change comments: order %1 + - - Shipping Method: - Versandmedode: + + + There was a problem uploading the new comment: %1 + - - Shipping Costs: - Versandgosden: + + Add comment: order %1 + - Item ID - De Nummor + + Error while changing shipping: %1 + - Description - Beschreibung + Unable to get template file (eventsummary). Giving up. + Gann de Vorlache (eventsummary) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. - Voucher (current value: %1) - Gudschein (agduell issor %1 werd) + + Open Document File (*.%1) + ODF Dadai (*.%1) - There are no tickets left to print. - Eivorbübbschd, da ist gehne Garde, die mor druggn gönn'. + + Enter Voucher + - There are no vouchers left to print. - Eivorbübbschd, da ist gehn Gudschein, den mor druggn gönn'. + + Please enter the ID of the voucher you want to use: + - Unable to get template file (voucher.xtt). Giving up. - Gann de Vorlache (voucher) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + Error while trying to pay with voucher '%1': %2 + - Unable to get template file (bill). Giving up. - Gann de Vorlache (bill) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + Voucher Info + - Unable to get template file (eventsummary). Giving up. - Gann de Vorlache (eventsummary) ni findn'. Isch hab mor Mühe gegebn. Abor jedsd gebsch off. + + Successfully paid order %1 with voucher '%2'. +Amount deducted: %3 +Remaining value of this voucher: %4 + - Open Document File (*.%1) - ODF Dadai (*.%1) + + Error while trying to refund: %1 + + Enter Price - Breis eingäbn + Breis eingäbn + Please enter the new price for the ticket: - Gib ma een Breis ein, und machn hübsch rund: + Gib ma een Breis ein, und machn hübsch rund: + + Error while attempting to change ticket price: %1 + + + + Cannot change this item type. - Die Ard von Ardiggel gansch' ni ändorn. + Die Ard von Ardiggel gansch' ni ändorn. This voucher cannot be returned, it has already been used. @@ -2511,26 +3743,12 @@ At least %1 Bits of random are required. Wolln'se den Gudschein wirschlisch zurüggeben? S'wär schade drum. + Cannot return this item type. - Die Ard von Ardiggel gansch' ni zurüggnehm. S'duhd mir leid. - - - - MoneyLog for Order... - - - - - MoneyLog for selected Voucher... - - - - - This is not a voucher, cannot show the money log. - + Die Ard von Ardiggel gansch' ni zurüggnehm. S'duhd mir leid. - + Pay with &Voucher... @@ -2538,171 +3756,171 @@ At least %1 Bits of random are required. MOrdersTab - + -select mode- - + -wähl ma was aus- - + All Orders - + Alle Beschdellungen - + Open Orders - + Offene Beschdellungen - + Open Reservations - + Offene Resorvierungen - + Outstanding Payments - + Wo noch ni bezahld is - + Outstanding Refunds - + Wo was zurügerschdadded werden muss - + Undelivered Orders - + Beschdellungen die noch ni ausgelieford sind - + -search result- - + -Suchräsuldahd- - + Update - + Auffrischn - + Details... - + Dedails anzeichen... - + Find by Ticket... - + Mit Garde finden... - + Find by Event... - + Nach Veranschdaldung suchn... - + Find by Customer... - + Nach Gunde suchn... - + Find by Order ID... - + Status - + Schdadus - + Total - + Summe - + Paid - + Bedsahld - + Customer - + Gunde - - - - - - - - + + + + + + + + Warning - + Dumm gelaufen - - + + There was a problem retrieving the order list: %1 - - + + Error while retrieving order: %1 - + Enter Ticket - + Garde eingebn - + Please enter the ID of one of the tickets of the order you seek: - + Bidde gib de Gennung von nor Garde ein, die Du suchsd: - + Error while searching for order: %1 - + Order for barcode '%1' not found. - + Select Event - + Veranschdaldung auswähln - + Ok - + Is gud so. - + Cancel - + Error while retrieving order list: %1 - + Enter Order ID - + Please enter the ID of the order you want to display: - + This order does not exist. @@ -2710,17 +3928,17 @@ At least %1 Bits of random are required. MOverview - + &Session &Sidsung - + &Re-Login &Noch'ma einloggn - + &Close Session Sidsung &Zumachn @@ -2729,21 +3947,21 @@ At least %1 Bits of random are required. &Veranschdaldung - + &Customer &Gunde - + Events Veranschdaldungen - - - - - + + + + + Warning Dumm gelaufen @@ -2760,7 +3978,7 @@ At least %1 Bits of random are required. Veranschdaldung &absach'n... - + &Show all customers &Alle Gunden anzeigen @@ -2797,7 +4015,7 @@ At least %1 Bits of random are required. Eindriddsgarde beschdellen... - + Shopping Cart Eingaufswagen @@ -2851,9 +4069,8 @@ At least %1 Bits of random are required. &Dedails anzeichen... - Users - Nudsor + Nudsor New User... @@ -2876,9 +4093,8 @@ At least %1 Bits of random are required. Rollen... - Hosts - Reschnor + Reschnor Login Name @@ -2909,7 +4125,7 @@ At least %1 Bits of random are required. Beschreibung vom Nudsor %1: - + Change my &Password Mei eechnes &Bassword ändorn @@ -2958,7 +4174,7 @@ At least %1 Bits of random are required. Nudsor '%1' wirklich löschen? Bissde Dir da och gans sischor? - + Error setting password: %1 Gann Bassword ni sedsen: %1 @@ -3053,7 +4269,7 @@ At least %1 Bits of random are required. Ne Beschdellung anlegn. - + Order List Beschdelllisde @@ -3110,7 +4326,7 @@ At least %1 Bits of random are required. Isch hadde nen Broblem mit dor Beschdellung: %1 - + Entrance Einlassgondrolle @@ -3147,7 +4363,7 @@ At least %1 Bits of random are required. Vorlache hochladn... - + &Misc Vorschiednes @@ -3272,7 +4488,7 @@ At least %1 Bits of random are required. De Garde gannsch ni zurügnehm. Die wurde schonma benudsd oder so. - + &Admin &Adminischdradsion @@ -3281,7 +4497,7 @@ At least %1 Bits of random are required. &Zeit für Sischerungsgobie fesdlechn... - + &Backup now... Jedsd &Sischorungsgobie anleschn... @@ -3351,66 +4567,66 @@ At least %1 Bits of random are required. Aldes Zeuch zeichen - + C&onfigure Gonfiguriern - + &Auto-Refresh settings... Schdändisch-Nachgugg-Einschdellungen... - + &Display settings... - + Refresh Settings Schdändisch-Nachgugg-Einschdellungen - + Refresh Rate (minutes): Nachguggfregwens (Minuden) - + refresh &event list Veranschdaldungslisde nachguggn - + refresh &user list Nudsorlisde nachguggn - + refresh &host list Reschnorlisde nachguggn - - - + + + &OK Nu &glar! Nehm'sch. - - - + + + &Cancel &Nee lass mal. - + &Edit Templates... Vorlachen bearbeeden... - + &Update Templates Now Jedsd soford nochmal nachguggen was es neues gibd @@ -3419,17 +4635,17 @@ At least %1 Bits of random are required. Jedsd soford Versandmedoden nachguggn - + Return &ticket... Eindriddsgarde zurüggeben... - + Return &voucher... Gudschein zurüggeben... - + Edit &Shipping Options... Versandmedoden bearbeeden... @@ -3482,107 +4698,112 @@ At least %1 Bits of random are required. Den Gudschein gannsch ni zurügnehm. Der wurde schonma benudsd, der iss ja schon angebissn. - + refresh &shipping list Versandmedoden offfrischen - + &Deduct from voucher... - - &Money Log for voucher... - - - - - Money Log for &user... + + &Server Access settings... - - &Server Access settings... + + &User Administration... - + Backup &Settings... - + Server Access Settings - + Request Timeout (seconds): - + Log Level: - + + No Logging + + + + Minimal Logging - + + Medium Logging + + + + Log Details on Error - + Always Log Details - + Display Settings - + Maximum event age (days, 0=show all): - + Maximum order list age (days, 0=show all): - + Backup - + The backup was successful. - + Cannot create backup file. - + I was unable to renew the login at the server. - + Backup failed with error (%2): %1 - + Backup returned empty. @@ -3626,52 +4847,204 @@ At least %1 Bits of random are required. + MPriceCategoryDialog + + + Select a Price Category + + + + + New... + new price category + Neier Raum... + + + + Select + select price category + + + + + + Cancel + + + + + New Price Category + + + + + Category Name: + + + + + Category Abbreviation: + + + + + Create + + + + + Warning + Dumm gelaufen + + + + Error while creating new price category: %1 + + + + + MRoleTab + + + New Role... + + + + + Delete Role... + + + + + Change Description... + + + + + Edit Flags... + + + + + Edit Rights... + + + + + Role Name + + + + + Description + Beschreibung + + + + Create New Role + + + + + Please enter a role name: + + + + + + + + Warning + Dumm gelaufen + + + + Error while trying to create role: %1 + + + + + Delete this Role? + + + + + Really delete role '%1'? + + + + + Error while trying to delete role: %1 + + + + + Edit Description + Beschreibung ändorn + + + + Description of role %1: + + + + + Cannot retrieve role: %1 + + + + + Cannot retrieve right list: %1 + + + + MSInterface - + Warning Dumm gelaufen - + Login failed: %1 - - - + + + Error Gans doller falschor Fehler - + Communication problem while talking to the server, see log for details. - + Communication with server was not successful. - + The server implementation is too old for this client. - + This client is too old for the server, please upgrade. - + Connection Error - + There were problems while authenticating the server. Aborting. Check your configuration. @@ -3687,32 +5060,32 @@ At least %1 Bits of random are required. MShippingChange - + Change Shipping Method Versandmedode ändorn - + Method: Medode: - + Price: Breis: - + Ok Is gud so. - + Cancel Abbreschen - + (None) shipping method (Gar Geene) @@ -3721,67 +5094,67 @@ At least %1 Bits of random are required. MShippingEditor - + Edit Shipping Options Versandmedoden bearbeeden - + Change Description Beschreibung ändorn - + Change Price Breis ändorn - + Change Availability Vorfügborgeed ändorn - + Add Option Medode hinzufüschn - + Delete Option Medode löschn - + Ok Is gud so. - + Cancel Doch ni' machen - + ID Nummor - + Description Beschreibung - + Price Breis - + Web Web - + Any User Jedor @@ -3961,17 +5334,17 @@ At least %1 Bits of random are required. MTemplateStore + Retrieving templates from server. - Hole Vorlachn vom Sörvor. S' gann ä bissl dauern. + Hole Vorlachn vom Sörvor. S' gann ä bissl dauern. MTicket - . decimal dot - , + , bought @@ -4063,142 +5436,142 @@ At least %1 Bits of random are required. MUserTab - + New User... - + Neier Nudsor... - + Delete User... - + Nudsor löschen... - + Description... - + Beschreibung... - + Hosts... - + Reschnor... - + Roles... - + Rollen... - + Set Password... - + Bassword sedsen... - + Login Name - + Name zum Anmelden - + Description - + Beschreibung - + New User - + Neier Nudsor - + Please enter new user name (only letters, digits, and underscore allowed): - + Bidde gib ma nen neien Nudsornam' ein (nur Buchschdaben, Ziffern und "_"): - - + + Error - + Gans doller falschor Fehler - + The user name must contain only letters, digits, dots and underscores and must be at least one character long! - + Nee. So ned. Du darfsd nur Buchschdaben, Zifforn, Bungde und "_" verwenden. Umlaude sind och nisch gud. Und es muss mid nem Buchschdaben anfangen. Is a bissl gomblizierd, aber Du schaffsd das schon! - + Password - + Bassword - + Please enter an initial password for the user: - + Bidde gib ma een Bassword für den Nudsor ein: - + Delete User? - + Nudsor löschen? - + Really delete user '%1'? - + Nudsor '%1' wirklich löschen? Bissde Dir da och gans sischor? - + (Nobody) this is a username for no user, the string must contain '(' to distinguish it from the others - + (Gar Geener) - + Delete User - + Nudsor Löschn - + Select which user will inherit this users database objects: - + Such ma raus wer de Beschdellung'n und so von dem Nudsor erbd: - + Cannot delete user: %1 - + Gann den Nudsor ni löschn: %1 - + Edit Description - + Beschreibung ändorn - + Description of user %1: - - - - + + + + Warning - + Dumm gelaufen - + Cannot retrieve user roles: %1 - + Cannot retrieve role descriptions: %1 - + The password must be non-empty and both lines must match - + Das Bassword darf nisch leer sein und beide Basswordzeilen müssen gleisch sein. - + Error while setting password: %1 @@ -4681,17 +6054,17 @@ At least %1 Bits of random are required. WTransaction - + interface not found - + Web Request timed out. - + HTTP Error, return code %1 %2 @@ -4701,26 +6074,46 @@ At least %1 Bits of random are required. - + + + - - - + + + + + + + + + + + - + + + + + + + + + + + @@ -4729,98 +6122,130 @@ At least %1 Bits of random are required. + + + + - + + + + + + + + + + + + XML result parser error line %1 col %2: %3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Class '%1' property '%2' is integer, but non-integer was found. - - - - - - - + + + + + + + + Class '%1' property '%2' is enum, invalid value was found. diff --git a/src/smoke_en.ts b/src/smoke_en.ts index 7377998..8854ce3 100644 --- a/src/smoke_en.ts +++ b/src/smoke_en.ts @@ -2,39 +2,237 @@ + MAclWindow + + + MagicSmoke ACL Editor [%1@%2] + + + + + &Window + + + + + &Close + + + + + Users + + + + + Roles + + + + + Hosts + + + + + MAddressChoiceDialog + + + Chose an Address + + + + + Add Address + + + + + Cancel + + + + + Warning + + + + + Unable to save changes made to addresses: %1 + + + + + MAddressDialog + + + Edit Address + + + + + Create Address + + + + + Last used: + + + + + Name: + + + + + + Address: + + + + + City: + + + + + State: + + + + + ZIP Code: + + + + + Country: + + + + + + Ok + + + + + + Cancel + + + + + Create New Country... + must contain leading space to distinguish it from genuine countries + + + + + Select Country + + + + + Please select a country: + + + + + Create New Country + + + + + Country Name: + + + + + Abbreviation: + + + + + + Warning + + + + + The country name and abbreviation must contain something! + + + + + Error while creating country: %1 + + + + + MAddressWidget + + + Select + + + + + Edit + + + + + Delete + + + + + Delete Address + + + + + Really delete this address? +%1 + + + + MAppStyleDialog - + Application Style - + GUI Style: - + System Default - + Stylesheet: - + Ok - + Cancel - + Select Stylesheet @@ -60,47 +258,47 @@ MBackupDialog - + Backup Settings - + Backup File: - + ... - + Generations to keep: - + Automatic Backup: - + Interval in days: - + &OK - + &Cancel - + Backup File @@ -119,109 +317,295 @@ - Remove Item + Add Shop Item + Remove Item + + + + + Remove Line - + Customer: - + + Invoice Address: + + + + Shipping Method: - + Delivery Address: - + Comments: - + Order - + Reserve - + Clear - - C&art + + Add &Ticket - - Add &Ticket + + Add &Voucher - - Add &Voucher + + Ca&rt - - &Remove Item + + Add &Shop-Item - + + &Remove Line + + + + &Abort Shopping - + &Update Shipping Options - + (No Shipping) - + Amount - + Title - + Start Time - + + Price + + + + + + + + + + + Warning + + + + + Please set the customer first. + + + + Select Event to order Ticket - + Select - + + + Cancel + + + Error getting event, please try again. + + + + + This event has no prices associated. Cannot sell tickets. + + + + + Select Price Category + + + + + Please chose a price category: + + + + + + Ok + + + + + Select Voucher + + + + + Select voucher price and value: + + + + + Price: + + + + + Value: + + + + + Voucher (value %1) + + + + + There are problems with the contents of the cart, please check and then try again. + + + + + + Error + + + + + There is nothing in the order. Ignoring it. + + + + + Please chose a customer first! + + + + + Shipping + + + + + You have chosen a shipping method, but no address. Are you sure you want to continue? + + + + + Reservations can only contain tickets. + + + + + Error while creating reservation: %1 + + + + + Error while creating order: %1 + + + + + The customer is not valid, please chose another one. + + + + + The delivery address is not valid, please chose another one. + + + + + The invoice address is not valid, please chose another one. + + + + + Shipping Type does not exist or you do not have permission to use it. + + + + + The event is already over, please remove this entry. + + + + + You cannot order tickets for this event anymore, ask a more privileged user. + + + + + The event is (almost) sold out, there are %1 tickets left. + + + + + The event does not exist or there is another serious problem, please remove this entry. + + + + + You do not have permission to create vouchers with this value, please remove it. + + + + + The price tag of this voucher is not valid, please remove and recreate it. + + MCentDialog @@ -357,171 +741,171 @@ - + Authentication - + Hostname: - + Hostkey: - + Default Username: - + SSL Exceptions - + List of non-fatal SSL exceptions: - + Clear - + Probe Server - - + + New Profile - - - + + + Please enter a profile name. It must be non-empty and must not be used yet: - + Rename Profile - - - - - - - - - + + + + + + + + + Warning - + This profile name is already in use. - + Generate Hostkey - + Do you really want to generate a new host key for this profile? This may disable all accounts from this host. - + Export Key to File - + Unable to open file %1 for writing: %2 - + Importing a key overwrites the host key that is currently used by this profile. This may disable your accounts. Do you still want to continue? - + Import Key from File - + Unable to open file %1 for reading: %2 - - + + This is not a host key file. - + This host key file does not contain a valid host name. - + This host key file does not contain a valid key. - + The key check sum did not match. Please get a clean copy of the host key file. - + Chose Default Font - + Please chose a default font: - - + + Server Probe - + The request finished without errors. - + The request finished with an error: %1 - + SSL Errors encountered: - + Certificate "%1" Fingerprint (sha1): %2 Error: %3 @@ -529,1528 +913,2427 @@ - + Accept connection anyway? - + SSL Warning - + Common Name - + SHA-1 Digest - + Error Type - MCustomerDialog + MContactTableDelegate - - Customer %1 + + (New Contact Type) - - New Customer + + Create new Contact Type + + + + + Contact Type Name: + + + + + Contact Type URI Prefix: + + + + + Ok + + + + + Cancel + + + + + Warning + + + + + Error while creating contact type: %1 + + + MCustomerDialog - Name: + Customer %1 - Address: + New Customer + + + + + Customer - - Contact Information: + + Name: - + Web-Login/eMail: - + + Edit Login + + + + Comment: - + + Addresses + + + + + Add Address + + + + + Contact Information + + + + + Add + + + + + Remove + + + + + Type + table: contact type + + + + + Contact + table: contact info + + + + Save - + Cancel + + + First Name: + + + + + Title: + + + + + + Warning + + + + + Error while changing customer data: %1 + + + + + Error while creating customer data: %1 + + MCustomerListDialog - + Select a Customer - + Customers - + Details... - + Create new... - + Delete... - + Select - + Cancel - + Close - + Delete Customer - + Really delete this customer (%1)? - + merge with other entry: - + &Yes - + &No - + Error - + Failed to delete customer: %1 - MEntranceTab + MEEPriceEdit - - Enter or scan Ticket-ID: + + Change Price - - - MEvent - - [0-9]+\.[0-9]{2} - price validator regexp + + Price category: - - - . - price decimal dot + + Price: - - - yyyy-MM-dd hh:mm ap - date/time format + + Maximum Seats: - - yyyy-MM-dd - date format + + Ok + + + + + Cancel - MEventEditor + MEntranceTab - - Warning + + Enter or scan Ticket-ID: - - Unable to load event from server. + + Open Order - - Event Editor + + Total: - - ID: + + Used: - - Title: + + Unused: - - Artist: + + Reserved: - - Description: + + searching... + entrance control - - Start Time: + + Ticket "%1" Not Valid - - - ddd MMMM d yyyy, h:mm ap - time format + + Ticket "%1" is not for this event. - - End Time: + + Ticket "%1" has already been used - - Room/Place: + + Ticket "%1" has not been bought. - - Capacity: + + Ticket "%1" Ok - - Default Price: + + Ticket "%1" is not paid for! - - Event Cancelled: + + Ticket "%1" cannot be accepted, please check the order! - - Save + + Warning - - - Cancel + + Error while retrieving order: %s + + + MEventEditor - - Select a Room + + + + + + + Warning - - New... - new room + + Unable to load event from server. - - Select - select room + + Event Editor - - - MEventSummary - - Summary for Event %1 + + Event - - Summary + + ID: - + Title: - + Artist: - - Start: + + Start Time: - - Capacity: + + + ddd MMMM d yyyy, h:mm ap + time format - - Tickets currently reserved: + + End Time: - - Tickets currently cancelled: + + Room/Place: - - Tickets currently usable: + + Capacity: - - Total Income: + + Event Cancelled: - - Tickets + + Description - - Price + + The description will be displayed on the web site, please use HTML syntax. - - Bought + + Comment - - Used + + The comment is for internal use only, please add any hints relevant for your collegues. - - Unused + + Prices - - Comments + + Change Price - - Order: + + Add Price - - Customer: + + Remove Price - - Print + + Save - - Save as... + + Close - - Close + + Error while creating event: %1 - - - MEventsTab - - New Event... + + Error while changing event: %1 - - Details... + + Price Category - - Order Ticket... + + Price - - Event Summary... + + Ticket Capacity - - Cancel Event... + + Tickets - - &Event + + Seats Blocked - - &Update Event List + + Cannot remove price '%1' - it has tickets in the database. - - &Show/Edit details... + + + Cancel - - &New Event... + + New Room - - Show &old Events + + Name of new room: - - Start Time + + Error while creating new room: %1 - - Title + + Select an Artist - - Free + + New... + new artist - - Reserved + + Select + select artist - - Sold + + New Artist - - Capacity + + Name of new artist: - - ddd MMMM d yyyy, h:mm ap - time format + + Error while creating new artist: %1 - - Cancel Event + + Select a Room - - Please enter a reason to cancel event "%1" or abort: + + New... + new room - - Event Cancelled + + Select + select room + + + MEventSummary - - The event "%1" has been cancelled. Please inform everybody who bought a ticket. + + Summary for Event %1 - - Warning + + Summary - - Unable to cancel event "%1": %2. + + Title: - - - MHostTab - - New Host... + + Artist: - - Add This Host... + + Start: - - Delete Host... + + Capacity: - - Generate New Key... + + Tickets currently reserved: - - Import... + + Tickets currently cancelled: - - Export... + + Tickets currently usable: - - Host Name + + Total Income: - - Host Key + + Tickets - - - MKeyGen - - Magic Smoke Key Generator + + Price - - <html><h1>Key Generation</h1> -I am currently collecting random bits in order to generate a host key for this installation. Please use mouse and keyboard to generate more random. Alternatively you can load a key from an external medium.<p> -At least %1 Bits of random are required. + + Bought - - - - Current random buffer: %n Bits - - Current random buffer: %n Bit - Current random buffer: %n Bits - - - - &OK + + Used - - &Cancel + + Unused - - - MLabelDialog - - Label Printing Setup + + Comments - - mm - defaultmetric: mm, in, cm + + Order: - - Label offset: + + Customer: - - Label size: + + Print - - Unit: + + Save as... - - Millimeter + + Close - - Centimeter + + + + Warning - - Inch + + Error while retrieving data: %1 - - Page usage: + + + Unable to get template file (eventsummary). Giving up. - - Page %1 + + Open Document File (*.%1) + + + MEventsTab - - Ok + + New Event... - - Cancel + + Details... - - Warning: the label may not fit on the page! + + Order Ticket... - - - MLogin - - Magic Smoke Login + + Event Summary... - - &File + + Cancel Event... - - &Exit + + &Event - - &Configure + + &Update Event List - - &Configuration... + + &Show/Edit details... - - Profile: + + &New Event... - - Username: + + Show &old Events - - Password: + + Start Time - - Login + + Title - - Warning + + Free - - Unable to log in. + + Reserved - - - MMoneyLog - - Money Log of %1 %2 + + Sold - - Close + + Capacity - - - MOCartOrder - - - Ok - ok + + ddd MMMM d yyyy, h:mm ap + time format - - - SaleOnly - saleonly + + Cancel Event - - - OrderOnly - orderonly + + Please enter a reason to cancel event "%1" or abort: - - - Invalid - invalid + + Event Cancelled - - - Ok + + The event "%1" has been cancelled. Please inform everybody who bought a ticket. - - - SaleOnly + + Warning - - - OrderOnly + + Unable to cancel event "%1": %2. + + + MHostTab - - - Invalid + + New Host... - - - MOCartTicket - - - Ok - ok + + Add This Host... - - - TooLate - toolate + + Delete Host... - - - Exhausted - exhausted + + Generate New Key... - - - SaleOnly - saleonly + + Import... - - - OrderOnly - orderonly + + Export... - - - Ok + + Host Name - - - TooLate + + Host Key + + + MInterface - - - Exhausted + + Backup - - - SaleOnly + + GetLanguage - - - OrderOnly + + ServerInfo - - - MOCartVoucher - - - Ok - ok + + Login - - - InvalidValue - invalidvalue + + Logout - - - InvalidPrice - invalidprice + + GetMyRoles - - - Ok + + GetMyRights - - - InvalidValue + + ChangeMyPassword - - - InvalidPrice + + GetAllUsers - - - MOOrderAbstract - - - Placed - placed + + CreateUser - - - Sent - sent + + ChangePassword - - - Sold - sold + + DeleteUser - - - Cancelled - cancelled + + SetUserDescription - - - Reserved - reserved + + GetUserRoles - - - Closed - closed + + SetUserRoles - - - Placed + + GetAllRoles - - - Sent + + GetRole - - - Sold + + CreateRole - - - Cancelled + + SetRoleDescription - - - Reserved + + SetRoleRights - - - Closed + + DeleteRole - - - MOOrderInfoAbstract - - - Placed - placed + + GetAllRightNames - - - Sent - sent + + GetAllHostNames - - - Sold - sold + + GetAllHosts - - - Cancelled - cancelled + + SetHost - - - Reserved - reserved + + DeleteHost - - - Closed - closed + + GetUserHosts + + + + + SetUserHosts + + + + + GetAllContactTypes + + + + + CreateContactType + + + + + GetCustomer + + + + + GetAllCustomerNames + + + + + CreateCustomer + + + + + ChangeCustomer + + + + + DeleteCustomer + + + + + GetAddress + + + + + GetAllCountries + + + + + CreateCountry + + + + + GetAllArtists + + + + + CreateArtist + + + + + GetAllPriceCategories + + + + + CreatePriceCategory + + + + + GetEvent + + + + + GetAllEvents + + + + + GetEventList + + + + + CreateEvent + + + + + ChangeEvent + + + + + CancelEvent + + + + + GetAllRooms + + + + + CreateRoom + + + + + GetEventSummary + + + + + GetTicket + + + + + GetVoucher + + + + + GetOrder + + + + + GetOrderList + + + + + GetOrdersByEvents + + + + + GetOrdersByCustomer + + + + + GetOrderByBarcode + + + + + CreateOrder + + + + + CreateReservation + + + + + ReservationToOrder + + + + + CancelOrder + + + + + OrderPay + + + + + OrderRefund + + + + + UseVoucher + + + + + OrderChangeShipping + + + + + OrderMarkShipped + + + + + OrderAddComment + + + + + OrderChangeComments + + + + + ReturnTicketVoucher + + + + + ChangeTicketPrice + + + + + GetAllShipping + + + + + GetValidVoucherPrices + + + + + UseTicket + + + + + GetEntranceEvents + + + + + GetTemplateList + + + + + GetTemplate + + + + + ChangeEvent:CancelEvent + + + + + CreateOrder:AnyVoucherValue + + + + + CreateOrder:DiffVoucherValuePrice + + + + + CreateOrder:LateSale + + + + + CreateOrder:AfterTheFactSale + + + + + CreateReservation:LateReserve + + + + + CancelOrder:CancelSentOrder + + + + + CancelOrder:CancelPastTickets + + + + + OrderChangeShipping:ChangePrice + + + + + OrderMarkShipped:SetTime + + + + + ReturnTicketVoucher:ReturnPastTicket + + + + + ChangeTicketPrice:ChangeUsedTicket + + + + + ChangeTicketPrice:ChangePastTicket + + + + + MKeyGen + + + Magic Smoke Key Generator + + + + + <html><h1>Key Generation</h1> +I am currently collecting random bits in order to generate a host key for this installation. Please use mouse and keyboard to generate more random. Alternatively you can load a key from an external medium.<p> +At least %1 Bits of random are required. + + + + + + Current random buffer: %n Bits + + Current random buffer: %n Bit + Current random buffer: %n Bits + + + + + &OK + + + + + &Cancel + + + + + MLabelDialog + + + Label Printing Setup + + + + + mm + defaultmetric: mm, in, cm + + + + + Label offset: + + + + + Label size: + + + + + Unit: + + + + + Millimeter + + + + + Centimeter + + + + + Inch + + + + + Page usage: + + + + + Page %1 + + + + + Ok + + + + + Cancel + + + + + Warning: the label may not fit on the page! + + + + + MLogin + + + Magic Smoke Login + + + + + &File + + + + + &Exit + + + + + &Configure + + + + + &Configuration... + + + + + Profile: + + + + + Username: + + + + + Password: + + + + + Login + + + + + Warning + + + + + Unable to log in. + + + + + MOCartOrder + + + + Ok + ok + + + + + + Invalid + invalid + + + + + MOCartTicket + + + + Ok + ok + + + + + + EventOver + + + + + + TooLate + toolate + + + + + + Exhausted + exhausted + + + + + + Invalid + + + + + MOCartVoucher + + + + Ok + ok + + + + + + InvalidValue + invalidvalue + + + + + + InvalidPrice + invalidprice + + + + + MOEvent + + + [0-9]+\.[0-9]{2} + price validator regexp + + + + + . + price decimal dot + + + + + + yyyy-MM-dd hh:mm ap + date/time format + + + + + yyyy-MM-dd + date format + + + + + MOOrder + + + + yyyy-MM-dd hh:mm ap + date/time format + + + + + + yyyy-MM-dd + date format + + + + + MOOrderAbstract + + + + Placed + placed + + + + + + Sent + sent + + + + + + Sold + sold + + + + + + Cancelled + cancelled + + + + + + Reserved + reserved + + + + + + Closed + closed + + + + + MOOrderInfoAbstract + + + + Placed + placed - Placed + Sent + sent + + + + + + Sold + sold + + + + + + Cancelled + cancelled + + + + + + Reserved + reserved + + + + + + Closed + closed + + + + + MOTicketAbstract + + + + Reserved + reserved + + + + + + Ordered + ordered + + + + + + Used + used + + + + + + Cancelled + cancelled + + + + + + Refund + refund + + + + + + MaskBlock + maskblock + + + + + + MaskPay + maskpay + + + + + + MaskUsable + maskusable + + + + + + MaskReturnable + maskreturnable + + + + + + MaskChangeable + + + + + MOTicketUse + + + + Ok + + + + + + NotFound + + + + + + WrongEvent - - - Sent + + + AlreadyUsed - - - Sold + + + NotUsable - - - Cancelled + + + Unpaid - - - Reserved + + + InvalidEvent + + + + + MOVoucherAbstract + + + + Ok - - - Closed + + + InvalidValue + + + + + + InvalidPrice - MOTicketAbstract + MOfficeConfig - - - Reserved - reserved + + Configure OpenOffice.org Access - - - Ordered - ordered + + OpenOffice.org - - - Used - used + + Path to Executable: - - - Cancelled - cancelled + + ... + select OpenOffice path button - - - Refund - refund + + Printing ODF - - - MaskBlock - maskblock + + Printer: - - - MaskPay - maskpay + + (Default Printer) - - - MaskUsable - maskusable + + Always confirm printer when printing ODF - - - MaskReturnable - maskreturnable + + Save printed files - - - Reserved + + Opening ODF - - - Ordered + + Always open as Read-Only - - - Used + + Automatically open all newly created files - - - Cancelled + + OK - - - Refund + + Cancel - - - MaskBlock + + Select OpenOffice.org executable + + + MOrderItemView - - - MaskPay + + Preview Tickets - - - MaskUsable + + Ticket: - - - MaskReturnable + + Voucher: - MOVoucher + MOrderWindow - - - Ok - ok + + Order Details - - - InvalidValue - invalidvalue + + &Order - - - InvalidPrice - invalidprice + + &Order... - - - Ok + + C&ancel Order... - - - InvalidValue + + &Mark Order as Shipped... - - - InvalidPrice + + Add Commen&t... - - - MOfficeConfig - - Configure OpenOffice.org Access + + Change C&omments... - - OpenOffice.org + + Change Sh&ipping Method... + Change Commen&t... - - Path to Executable: + + &Close + + + + + &Payment + + + + + Receive &Payment... + + + + + &Refund... + + + + + P&rinting + + + + + Print &Bill... + + + + + Save Bill &as file... + + + + + Print &Tickets... + + + + + Order ID: + + + + + Order Date: + + + + + Shipping Date: + + + + + Customer: + + + + + Delivery Address: + + + + + Invoice Address: + + + + + Sold by: + + + + + Order Comments: + + + + + Item ID + + + + + Description + + + + + Start Time + + + + + Status + + + + + Price + + + + + Voucher (current value: %1) + + + + + %1x %2 + + + + + There are no tickets left to print. + + + + + Unable to get template file (ticket.xtt). Giving up. + + + + + There are no vouchers left to print. + + + + + Unable to get template file (voucher.xtt). Giving up. + + + + + + Unable to get template file (bill). Giving up. - - ... - select OpenOffice path button + + + + Mark as shipped? - - Printing ODF + + + + Mark this order as shipped now? - - Printer: + + Open Document File (*.%1) - - (Default Printer) + + Enter Payment - - Always confirm printer when printing ODF + + Please enter the amount that has been paid: - - Save printed files + + Error while trying to pay: %1 - - Opening ODF + + Enter Voucher - - Always open as Read-Only + + Please enter the ID of the voucher you want to use: - - Automatically open all newly created files + + Error while trying to pay with voucher '%1': %2 - - OK + + Voucher Info - - Cancel + + Successfully paid order %1 with voucher '%2'. +Amount deducted: %3 +Remaining value of this voucher: %4 - - Select OpenOffice.org executable + + Enter Refund - - - MOrder - - - yyyy-MM-dd hh:mm ap - date/time format + + Please enter the amount that will be refunded: - - - yyyy-MM-dd - date format + + Error while trying to refund: %1 - - - MOrderItemView - - Preview Tickets + + Enter Price - - Ticket: + + Please enter the new price for the ticket: - - Voucher: + + Error while attempting to change ticket price: %1 - - - MOrderWindow - - Order Details + + Cannot change this item type. - - &Order + + Cannot return this item type. - - &Order... + + Return Ticket or Voucher - - C&ancel Order... + + Do you really want to return this ticket or voucher? - - &Mark Order as Shipped... + + Error whily trying to return item: %1 - - Change Commen&t... + + Cancel Order? - - &Close + + Cancel this order now? - - &Payment + + Error while cancelling order: %1 - - Receive &Payment... + + Error while changing order status: %1 - - &Refund... + + Set shipping time - - P&rinting + + Enter the shipping time: - - Print &Bill... + + OK - - Save Bill &as file... + + Cancel - - Print &Tickets... + + Error while marking order as shipped: %1 - - Order ID: + + Change comments: order %1 - - Order Date: + + + &Save - - Shipping Date: + + + &Cancel - - Customer: + + + There was a problem uploading the new comment: %1 - - Delivery Address: + + Add comment: order %1 - - Sold by: + + Error while changing shipping: %1 - + Total Price: - + Already Paid: - + Order State: - - Order Comment: - - - - + + + + + + + + + + + + + + + + + + + Warning - + Ch&ange Item-Price... - + &Return Item... - + Change Sh&ipping Method... - + Print V&ouchers... - + Print &Current Item... - + &View Items... - + Shipping Method: - + Shipping Costs: - - MoneyLog for Order... - - - - - MoneyLog for selected Voucher... - - - - - This is not a voucher, cannot show the money log. - - - - + Pay with &Voucher... @@ -2058,171 +3341,171 @@ At least %1 Bits of random are required. MOrdersTab - + -select mode- - + All Orders - + Open Orders - + Open Reservations - + Outstanding Payments - + Outstanding Refunds - + Undelivered Orders - + -search result- - + Update - + Details... - + Find by Ticket... - + Find by Event... - + Find by Customer... - + Find by Order ID... - + Status - + Total - + Paid - + Customer - - - - - - - - + + + + + + + + Warning - - + + There was a problem retrieving the order list: %1 - - + + Error while retrieving order: %1 - + Enter Ticket - + Please enter the ID of one of the tickets of the order you seek: - + Error while searching for order: %1 - + Order for barcode '%1' not found. - + Select Event - + Ok - + Cancel - + Error while retrieving order list: %1 - + Enter Order ID - + Please enter the ID of the order you want to display: - + This order does not exist. @@ -2230,106 +3513,96 @@ At least %1 Bits of random are required. MOverview - + &Session - + &Re-Login - + Change my &Password - + &Close Session - + &Customer - + &Show all customers - + &Misc - + C&onfigure - + &Auto-Refresh settings... - + &Display settings... - + &Admin - + &Backup now... - + Events - + Shopping Cart - + Order List - + Entrance - - Users - - - - - Hosts - - - - - - - - + + + + + Warning - + Error setting password: %1 @@ -2348,171 +3621,176 @@ At least %1 Bits of random are required. - + Refresh Settings - + Refresh Rate (minutes): - + refresh &event list - + refresh &user list - + refresh &host list - - - + + + &OK - - - + + + &Cancel - + &Edit Templates... - + &Update Templates Now - + Return &ticket... - + Return &voucher... - + Edit &Shipping Options... - + refresh &shipping list - + &Deduct from voucher... - - &Money Log for voucher... - - - - - Money Log for &user... + + &Server Access settings... - - &Server Access settings... + + &User Administration... - + Backup &Settings... - + Server Access Settings - + Request Timeout (seconds): - + Log Level: - + + No Logging + + + + Minimal Logging - + + Medium Logging + + + + Log Details on Error - + Always Log Details - + Display Settings - + Maximum event age (days, 0=show all): - + Maximum order list age (days, 0=show all): - + Backup - + The backup was successful. - + Cannot create backup file. - + I was unable to renew the login at the server. - + Backup failed with error (%2): %1 - + Backup returned empty. @@ -2556,52 +3834,204 @@ At least %1 Bits of random are required. + MPriceCategoryDialog + + + Select a Price Category + + + + + New... + new price category + + + + + Select + select price category + + + + + + Cancel + + + + + New Price Category + + + + + Category Name: + + + + + Category Abbreviation: + + + + + Create + + + + + Warning + + + + + Error while creating new price category: %1 + + + + + MRoleTab + + + New Role... + + + + + Delete Role... + + + + + Change Description... + + + + + Edit Flags... + + + + + Edit Rights... + + + + + Role Name + + + + + Description + + + + + Create New Role + + + + + Please enter a role name: + + + + + + + + Warning + + + + + Error while trying to create role: %1 + + + + + Delete this Role? + + + + + Really delete role '%1'? + + + + + Error while trying to delete role: %1 + + + + + Edit Description + + + + + Description of role %1: + + + + + Cannot retrieve role: %1 + + + + + Cannot retrieve right list: %1 + + + + MSInterface - + Warning - + Login failed: %1 - - - + + + Error - + Communication problem while talking to the server, see log for details. - + Communication with server was not successful. - + The server implementation is too old for this client. - + This client is too old for the server, please upgrade. - + Connection Error - + There were problems while authenticating the server. Aborting. Check your configuration. @@ -2609,32 +4039,32 @@ At least %1 Bits of random are required. MShippingChange - + Change Shipping Method - + Method: - + Price: - + Ok - + Cancel - + (None) shipping method @@ -2643,67 +4073,67 @@ At least %1 Bits of random are required. MShippingEditor - + Edit Shipping Options - + Change Description - + Change Price - + Change Availability - + Add Option - + Delete Option - + Ok - + Cancel - + ID - + Description - + Price - + Web - + Any User @@ -2809,153 +4239,152 @@ At least %1 Bits of random are required. - MTicket + MTemplateStore - - . - decimal dot + + Retrieving templates from server. MUserTab - + New User... - + Delete User... - + Description... - + Hosts... - + Roles... - + Set Password... - + Login Name - + Description - + New User - + Please enter new user name (only letters, digits, and underscore allowed): - - + + Error - + The user name must contain only letters, digits, dots and underscores and must be at least one character long! - + Password - + Please enter an initial password for the user: - + Delete User? - + Really delete user '%1'? - + (Nobody) this is a username for no user, the string must contain '(' to distinguish it from the others - + Delete User - + Select which user will inherit this users database objects: - + Cannot delete user: %1 - + Edit Description - + Description of user %1: - - - - + + + + Warning - + Cannot retrieve user roles: %1 - + Cannot retrieve role descriptions: %1 - + The password must be non-empty and both lines must match - + Error while setting password: %1 @@ -3257,17 +4686,17 @@ At least %1 Bits of random are required. WTransaction - + interface not found - + Web Request timed out. - + HTTP Error, return code %1 %2 @@ -3277,26 +4706,46 @@ At least %1 Bits of random are required. - + + + - - - + + + + + + + + + + + - + + + + + + + + + + + @@ -3305,98 +4754,130 @@ At least %1 Bits of random are required. + + + + - + + + + + + + + + + + + XML result parser error line %1 col %2: %3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Class '%1' property '%2' is integer, but non-integer was found. - - - - - - - + + + + + + + + Class '%1' property '%2' is enum, invalid value was found. diff --git a/wob/user.wolf b/wob/user.wolf index 7303bf1..08de0f3 100644 --- a/wob/user.wolf +++ b/wob/user.wolf @@ -193,7 +193,6 @@ - @@ -203,6 +202,23 @@ + + + + + + + + + + + + + + + + + @@ -227,10 +243,53 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -249,6 +308,7 @@ + @@ -256,23 +316,7 @@ - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/www/inc/machine/muser.php b/www/inc/machine/muser.php index 7521705..0c061fb 100644 --- a/www/inc/machine/muser.php +++ b/www/inc/machine/muser.php @@ -11,7 +11,7 @@ // // -/**encapsulated machine user management in several static functions; +/**encapsulated machine user/role/host management in several static functions; it is called directly from the user centered transactions; DO NOT USE THIS CLASS OUTSIDE TRANSACTION CONTEXT!*/ class MachineUser @@ -40,6 +40,7 @@ class MachineUser $trans->setuser(MOUser::fromTableuser($usr)); } + /**deletes or merges a user*/ static public function deleteUser($trans) { //sanity check: do users exist @@ -73,11 +74,21 @@ class MachineUser $usr->deleteFromDB(); } + /**change a users password*/ static public function changePasswd($trans) { $usr=WTuser::getFromDB($trans->getusername()); + if(!is_a($usr,"WTuser")){ + $trans->abortWithError(tr("User does not exist.")); + retrun; + } + $slt=getSalt(); + $hsh=sha1($slt.$trans->getpassword()); + $usr->passwd=$slt." ".$hsh; + $usr->update(); } + /**sets the description of a user*/ static public function setUserDescription($trans) { $usr=WTuser::getFromDB($trans->getusername()); @@ -89,6 +100,7 @@ class MachineUser $usr->update(); } + /**returns the roles of a user*/ static public function getUserRoles($trans) { //sanity check @@ -107,8 +119,223 @@ class MachineUser $trans->setroles($r); } - static public function setUserRoles($trans){} - + /**set roles of a user*/ + static public function setUserRoles($trans) + { + //sanity check + $uname=$trans->getusername(); + $usr=WTuser::getFromDB($uname); + if($usr===false){ + $trans->abortWithError(tr("User does not exist.")); + return; + } + //verify roles + global $db; + $res=$db->select("role","rolename"); + $arole=array(); + foreach($res as $r) + $arole[]=$r["rolename"]; + $roles=array_unique(array_values($trans->getroles())); + foreach($roles as $r){ + if(!in_array($r,$arole)){ + $trans->abortWithError(tr("Trying to assign non-existent role.")); + return; + } + } + //delete old ones + $db->deleteRows("userrole","uname=".$db->escapeString($uname)); + //create new ones + foreach($roles as $r) + $db->insert("userrole",array("uname"=>$uname,"role"=>$r)); + } + + /**get hosts of a user*/ + static public function getUserHosts($trans) + { + //sanity check + $uname=$trans->getusername(); + $usr=WTuser::getFromDB($uname); + if($usr===false){ + $trans->abortWithError(tr("User does not exist.")); + return; + } + //get hosts + global $db; + $res=$db->select("userhost","host","uname=".$db->escapeString($uname)); + $ret=array(); + foreach($res as $r) + $ret[]=$r["host"]; + $trans->sethosts($ret); + } + + /**set the hosts for a user*/ + static public function setUserHosts($trans) + { + //sanity check + $uname=$trans->getusername(); + $usr=WTuser::getFromDB($uname); + if($usr===false){ + $trans->abortWithError(tr("User does not exist.")); + return; + } + //verify roles + global $db; + $res=$db->select("host","hostname"); + $ahost=array(); + foreach($res as $r) + $ahost[]=$r["hostname"]; + $hosts=array_unique(array_values($trans->gethosts())); + foreach($hosts as $r){ + if(!in_array($r,$ahost)){ + $trans->abortWithError(tr("Trying to assign non-existent host.")); + return; + } + } + //delete old ones + $db->deleteRows("userhost","uname=".$db->escapeString($uname)); + //create new ones + foreach($hosts as $r) + $db->insert("userhost",array("uname"=>$uname,"host"=>$r)); + } + + /**get all host names (sub-routine for clients user host dialog)*/ + static public function getAllHostNames($trans) + { + global $db; + $res=$db->select("host","hostname"); + $ret=array(); + foreach($res as $r) + $ret[]=$r["hostname"]; + $trans->sethostnames($ret); + } + + /**sets the description of a role*/ + static public function setRoleDescription($trans) + { + $role=WTrole::getFromDB($trans->getrole()); + if(!is_a($role,"WTrole")){ + $trans->abortWithError(tr("Role does not exist.")); + return; + } + //update + $role->description=$trans->getdescription(); + $role->update(); + } + + /**creates a role*/ + static public function createRole($trans) + { + //check for syntax + $rnm=trim($trans->getrole().""); + if(ereg("^[a-zA-Z][a-zA-z0-9_\\.-]*$",$rnm)===false){ + $trans->abortWithError(tr("Illegal role name.")); + return; + } + //check whether it exists + $role=WTrole::getFromDB($rnm); + if(is_a($role,"WTrole")){ + $trans->abortWithError(tr("Role already exists.")); + return; + } + //create + $role=WTrole::newRow(); + $role->rolename=$rnm; + $role->insert(); + } + + /**changes the rights attached to a role*/ + static public function setRoleRights($trans) + { + global $db; + //check role + $rnm=trim($trans->getrole()); + $role=WTrole::getFromDB($rnm); + if(!is_a($role,"WTrole")){ + $trans->abortWithError(tr("Role does not exist.")); + return; + } + //check rights + $allrights=WobTransaction::transactionNames(); + $allrights+=WobTransaction::privilegeNames(); + $set=$trans->getrights(); + foreach($set as $r){ + if(!in_array($r,$allrights)){ + $trans->abortWithError(tr("Trying to set an illegal right.")); + return; + } + } + //delete old set + $db->deleteRows("roleright","rolename=".$db->escapeString($rnm)); + //set new set + foreach($set as $r){ + $db->insert("roleright",array("rolename"=>$rnm,"rightname"=>$r)); + } + } + + /**delete role*/ + static public function deleteRole($trans) + { + $rnm=trim($trans->getrole()); + //privileged? + if(substr($rnm,0,1)=="_"){ + $trans->abortWithError(tr("Cannot delete special roles.")); + return; + } + //find + $role=WTrole::getFromDB($rnm); + if(!is_a($role,"WTrole")){ + $trans->abortWithError(tr("Role does not exist.")); + return; + } + //delete foreign key refs + global $db; + $db->deleteRows("userrole","role=".$db->escapeString($rnm)); + $db->deleteRows("roleright","rolename=".$db->escapeString($rnm)); + //delete + $role->deleteFromDB(); + } + + /**create/update host*/ + static public function setHost($trans) + { + //check host name + $hname=$trans->getname(); + if(substr($hname,0,1)=="_"){ + $trans->abortWithError(tr("Cannot set/create special hosts.")); + return; + } + if(ereg("^[a-zA-Z][a-zA-z0-9_\\.-]*$",$hname)===false){ + $trans->abortWithError(tr("Illegal host name.")); + return; + } + //get host object + $hst=WThost::getFromDB($hname); + if(!is_a($hst,"WThost")){ + $hst=WThost::newRow(); + $hst->hostname=$hname; + } + //update + $hst->hostkey=$trans->getkey(); + $hst->insertOrUpdate(); + } + + /**deletes a host*/ + static public function deleteHost($trans) + { + //check host name + $hname=$trans->getname(); + if(substr($hname,0,1)=="_"){ + $trans->abortWithError(tr("Cannot delete special hosts.")); + return; + } + //get host object + $hst=WThost::getFromDB($hname); + if(!is_a($hst,"WThost")){ + $trans->abortWithError(tr("Host does not exist.")); + return; + } + $hst->deleteFromDB(); + } }; ?> \ No newline at end of file diff --git a/www/inc/wext/role.php b/www/inc/wext/role.php index 4916d6a..339e4c8 100644 --- a/www/inc/wext/role.php +++ b/www/inc/wext/role.php @@ -15,7 +15,7 @@ class WORole extends WORoleAbstract{ protected function getRightsFromDB() { global $db; - $rtl=$db->select("roleright","rolename=".$db->escapeString($this->prop_name)); + $rtl=$db->select("roleright","rightname","rolename=".$db->escapeString($this->prop_name)); $ret=array(); foreach($rtl as $rt){ $ret[]=$rt["rightname"];