Compare commits

...

74 commits

Author SHA1 Message Date
corsaronero
a72ded2675 deleted not necessary files 2022-09-12 15:18:52 +00:00
corsaronero
acf4ee4664 update to last version, history is in repo wmdeit_kaform_ownhistory 2022-09-12 15:16:19 +00:00
Tobias Herre
ab235e2e07 Don't use absolute path for language switch 2022-09-09 13:57:42 +02:00
Tobias Herre
b053ce21da Changes made by Luca - multi language support 2022-09-09 11:32:15 +02:00
Tobias Herre
6ece293ae7 Fixed bank account owner 2022-03-15 10:16:32 +01:00
Tobias Herre
44aeeae0db Ideenfoerderung -> Communitys und Engagement 2021-12-20 09:57:24 +01:00
Tobias Herre
3de875b138 Download after sent per mail 2021-12-17 14:00:12 +01:00
Tobias Herre
67d602af8d Currencies in PDF are displayed 2021-12-17 11:19:24 +01:00
Tobias Herre
70a1e04176 Routing number 2021-12-11 11:52:37 +01:00
Tobias Herre
b80587ca54 Added imprint and privacey links 2021-12-11 11:41:32 +01:00
Tobias Herre
d7132e1f0d Some additional hints added 2021-12-11 09:07:15 +01:00
Tobias Herre
712032e235 Open Links in new Window 2021-12-11 08:12:31 +01:00
Tobias Herre
e82671d0f4 Renamed EU -> SEPA 2021-12-11 08:07:30 +01:00
root
f449e09e2a Fixed spelling 2021-11-25 12:28:11 +00:00
root
788839a425 Fixed spelling 2021-11-25 08:35:15 +00:00
Tobias Herre
dd2c48c2a5 removed ka.php in link to send one more reimburstment claim 2021-11-25 10:18:01 +01:00
Tobias Herre
70001610f1 Enabled jpg/png/tiff/gif uploads. 2021-11-25 01:12:01 +01:00
Tobias Herre
5c0e5ab2b8 Merge branch 'master' of https://srcsrv.wikimedia.de/tohe/wmdeit_kaform 2021-11-24 10:58:11 +01:00
Tobias Herre
5bdfadb80e Fix issue #11 part 2 2021-11-24 10:57:39 +01:00
Tobias Herre
809e888807 Fix issue #11 2021-11-24 10:53:22 +01:00
Tobias Herre
c535d2a060 config for convert and pdftk 2021-11-23 13:49:17 +01:00
Tobias Herre
db5991c0de Accepts and converts Jpegs 2021-11-23 13:44:08 +01:00
root
e2513081f0 Convert cmd in config.php not ignored 2021-11-23 11:55:00 +00:00
Tobias Herre
147de59bac Fix: No mails w/o attachment, after upload of wrong files 2021-11-18 09:51:23 +01:00
Tobias Herre
5fe39a1cbf Allow to configure CC mailing 2021-11-03 12:33:55 +01:00
Tobias Herre
6ad54e1a3a Changed Kontaktperson example Sandro to generic person 2021-11-03 09:44:22 +01:00
Tobias Herre
305f4c9c48 Moved help-text #1 to top of form 2021-11-03 09:41:55 +01:00
Tobias Herre
87f1e9b0bf Fixx issue #5 2021-10-26 09:28:21 +02:00
Tobias Herre
e5e4eccf8d Fix issue #4 2021-10-26 09:26:31 +02:00
Tobias Herre
5492dc24cd Fix issue #4 2021-10-26 09:22:09 +02:00
Tobias Herre
e0b98b0cd1 Changed text for "Vorschuss erhalten" 2021-10-19 13:19:51 +02:00
Tobias Herre
6ad2e92bb8 Fixes issue https://srcsrv.wikimedia.de/tohe/wmdeit_kaform/issues/2 2021-10-18 17:12:23 +02:00
Tobias Herre
91961198c4 Some fixes regarding multi-lang and css 2021-10-18 17:06:07 +02:00
root
297b5ee5d0 Use always <?php instead of <? 2021-09-14 01:42:30 +00:00
Tobias Herre
a16ef8a316 Responsive table 2021-09-13 11:33:03 +02:00
Tobias Herre
3d868cc774 Noew rthere is an index.php 2021-09-13 09:05:08 +02:00
Tobias Herre
d24ae73419 Merge branch 'master' of https://srcsrv.wikimedia.de/tohe/wmdeit_kaform 2021-09-13 09:04:25 +02:00
Tobias Herre
2dc768173c uses master.scss 2021-09-13 09:03:49 +02:00
Tobias Herre
2e0c9d3194 Moved form into form.php 2021-09-13 09:03:07 +02:00
Sandro Halank
45f27e1ca6 fix 2021-07-26 12:30:10 +00:00
Sandro Halank
7e63637f19 fix 2021-07-26 12:29:07 +00:00
Sandro Halank
88f01e2a63 fix space 2021-07-12 09:47:20 +00:00
Sandro Halank
9d70eb73ad typo 2021-07-08 10:27:18 +00:00
Sandro Halank
ef4ea9dfd3 fix 2021-07-08 10:26:43 +00:00
Sandro Halank
4b85be1bbc add translation for ka.php:29 2021-07-08 09:57:54 +00:00
Tobias Herre
37eba4283b fixed englishi/german messages in ka.php and messages.p 2021-07-07 20:40:01 +02:00
Sandro Halank
bed8c8c542 fix 2021-07-07 15:05:04 +00:00
Sandro Halank
5e99e90269 add and fix infos
quite a lot of adjustments
2021-07-07 15:04:56 +00:00
Sandro Halank
b68e71a52e fix 2021-07-07 14:44:11 +00:00
Sandro Halank
804a02cec6 fxes
fixes related to the current version
2021-07-07 14:17:07 +00:00
Sandro Halank
9d190223a0 fix
fixes related to the current version
2021-07-07 14:08:41 +00:00
Sandro Halank
7a0ebf1a2c fix
fixes related to the current version
2021-07-07 14:08:25 +00:00
Tobias Herre
84dc69ee81 Removed "this has to be tranlated 2021-07-07 15:08:55 +02:00
Tobias Herre
b9cbeb2914 English translation complete 2021-07-07 15:01:21 +02:00
root
b8e65e9c98 fixes to run on ubuntu with utf8 2021-07-06 15:27:53 +00:00
Tobias Herre
891b04e0dc lang en_us hard coded 2021-07-06 19:14:01 +02:00
Tobias Herre
e12288a9b7 new message.po fiiles 2021-07-06 19:06:14 +02:00
Tobias Herre
c9e2081d42 More translations added 2021-07-06 19:01:18 +02:00
Tobias Herre
9964249d49 More translatrions including h1.php and h2.php 2021-07-06 18:46:34 +02:00
Tobias Herre
8f8f9b1505 Language support (partial) 2021-07-06 18:36:18 +02:00
Tobias Herre
8f35208d33 Moved sned buttons to the right place 2021-07-02 12:49:48 +02:00
Sandro Halank
ed493c4233 fix grammar 2021-07-01 13:56:06 +00:00
Sandro Halank
d9aaedd624 add routing number info 2021-07-01 12:20:39 +00:00
Sandro Halank
c841a02a5a add currency info 2021-07-01 12:18:18 +00:00
Sandro Halank
00d4f7a547 remove info
comma to separate currency and decimal places (removed)
2021-06-30 09:49:51 +00:00
Tobias Herre
bf07702a0b Global currency selection 2021-06-29 18:42:48 +02:00
Sandro Halank
a3b05f21cf fix line break 2021-06-24 08:46:08 +00:00
Sandro Halank
6cae0d3adf „h2.php“ ändern
fix
2021-06-16 13:41:06 +00:00
Sandro Halank
ee74a9a9d3 „h2.php“ ändern
Beschreibung überarbeitet
2021-06-16 13:34:44 +00:00
Tobias Herre
a0bc4559ed isMailable works correct now 2021-06-13 00:51:43 +02:00
Tobias Herre
65427097ba Some refactoring and cleaning 2021-06-13 00:27:16 +02:00
Tobias Herre
cf2b7f75e1 PDF generation works again 2021-06-12 19:54:45 +02:00
Tobias Herre
8478eb1f94 New (old) layout implmented 2021-06-12 19:43:05 +02:00
Tobias Herre
769eada180 list missing php-fileinfo module 2020-12-22 11:11:06 +01:00
31 changed files with 3580 additions and 453 deletions

View file

@ -317,7 +317,7 @@
<input class="screen" type="radio" id="noneu" name="bank" value="Non-EU"><label class="screen radio" for="noneu" lang="de">Non-EU-Banküberweisung</label><label class="screen radio" for="noneu" lang="en">Non EU bank transfer</label>
<input class="screen" type="radio" id="paypal" name="bank" value="PayPal"><label class="screen radio" for="paypal">PayPal</label>
<input class="screen" type="radio" id="bar" name="bank" value="Bar"><label class="screen radio" for="bar" lang="de">Bargeld</label><label class="screen radio" for="bar" lang="en">Cash</label>
<label class="EU nonEU" for="owner" lang="de">Kontoinhaber</label><label class="EU nonEU" for="owner" lang="en">Bank account owner</label><input class="EU nonEU" type="input" size="32" id="ownerDe" name="Owner" placeholder="wenn abweichend vom Realnamen" lang="de" /><input class="EU nonEU" type="input" size="32" id="ownerEn" name="Owner" placeholder="if different from full legal name" lang="en" />
<label class="EU nonEU" for="owner" lang="de">Kontoinhabende Person</label><label class="EU nonEU" for="owner" lang="en">Bank account owner</label><input class="EU nonEU" type="input" size="32" id="ownerDe" name="Owner" placeholder="wenn abweichend vom Realnamen" lang="de" /><input class="EU nonEU" type="input" size="32" id="ownerEn" name="Owner" placeholder="if different from full legal name" lang="en" />
<label class="EU nonEU" for="iban" lang="de">IBAN</label><label class="EU nonEU" for="iban" lang="en">Bank account number</label><input class="EU nonEU" type="input" size="32" id="iban" name="IBAN" placeholder="DE0123…" />
<label class="EU nonEU" for="bic">BIC / SWIFT</label><input class="EU nonEU" type="input" size="32" id="bic" name="BIC" placeholder="LBMU…" />
<label class="EU nonEU" for="bank" lang="de">Name der Bank</label><label class="EU nonEU" for="bank" lang="en">Name of bank</label><input class="EU nonEU" type="input" size="32" id="bank" name="Bankname" placeholder="Banky McBankface" />
@ -336,8 +336,7 @@ Land"></textarea>
<label class="nonEU" for="address" lang="de">Deine Anschrift</label><textarea lang="de" class="nonEU" id="address" style="resize:both;" cols="32" rows="4" placeholder="Straße und Hausnummer
Postleitzahl und Ort
Land"></textarea>
<label class="EU nonEU" for="comments" lang="de">Weitere Anmerkungen</label><textarea lang="de" class="EU nonEU" id="comments" style="resize:both;" cols="32" rows="4" placeholder="z.B. intermdiäre Bank,
Grund für abweichende Kontoinhaberin"></textarea>
<label class="EU nonEU" for="comments" lang="de">Weitere Anmerkungen</label><textarea lang="de" class="EU nonEU" id="comments" style="resize:both;" cols="32" rows="4" placeholder="z. B. intermdiäre Bank, Grund für abweichende kontoinhabende Person, Routing-Nummer (für Nicht-EU-Überweisungen)"></textarea>
<label class="paypal" for="accountnumber">PayPal account</label><input class="paypal" type="input" size="32" id="paypal" placeholder="paypal@example.com" />
</fieldset>

View file

@ -10,6 +10,7 @@ Install the following programs and PHP modules:
* php-openssl
* php-ctype
* php-filter
* php-fileinfo
Copy **config.sample.php** to **config.php**, and edit **config.php** to your needs.

1186
Spyc.php Normal file

File diff suppressed because it is too large Load diff

5
TCPDF/composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "5726aa312f77aee905146d13d6be7179",
"content-hash": "677cb3d4da030c7eb3bf355a20d32026",
"packages": [],
"packages-dev": [],
"aliases": [],
@ -15,5 +15,6 @@
"platform": {
"php": ">=5.3.0"
},
"platform-dev": []
"platform-dev": [],
"plugin-api-version": "1.1.0"
}

View file

@ -60,7 +60,7 @@ class ClassLoader
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', $this->prefixesPsr0);
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
@ -279,7 +279,7 @@ class ClassLoader
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
@ -377,7 +377,7 @@ class ClassLoader
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath.'\\';
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {

View file

@ -0,0 +1,352 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer;
use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;
/**
* This class is copied in every Composer installed project and available to all
*
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
*
* To require its presence, you can require `composer-runtime-api ^2.0`
*
* @final
*/
class InstalledVersions
{
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool|null
*/
private static $canGetVendors;
/**
* @var array[]
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static $installedByVendor = array();
/**
* Returns a list of all package names which are present, either by being installed, replaced or provided
*
* @return string[]
* @psalm-return list<string>
*/
public static function getInstalledPackages()
{
$packages = array();
foreach (self::getInstalled() as $installed) {
$packages[] = array_keys($installed['versions']);
}
if (1 === \count($packages)) {
return $packages[0];
}
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
}
/**
* Returns a list of all package names with a specific type e.g. 'library'
*
* @param string $type
* @return string[]
* @psalm-return list<string>
*/
public static function getInstalledPackagesByType($type)
{
$packagesByType = array();
foreach (self::getInstalled() as $installed) {
foreach ($installed['versions'] as $name => $package) {
if (isset($package['type']) && $package['type'] === $type) {
$packagesByType[] = $name;
}
}
}
return $packagesByType;
}
/**
* Checks whether the given package is installed
*
* This also returns true if the package name is provided or replaced by another package
*
* @param string $packageName
* @param bool $includeDevRequirements
* @return bool
*/
public static function isInstalled($packageName, $includeDevRequirements = true)
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
}
}
return false;
}
/**
* Checks whether the given package satisfies a version constraint
*
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
*
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
*
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
* @param string $packageName
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
* @return bool
*/
public static function satisfies(VersionParser $parser, $packageName, $constraint)
{
$constraint = $parser->parseConstraints($constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
return $provided->matches($constraint);
}
/**
* Returns a version constraint representing all the range(s) which are installed for a given package
*
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
* whether a given version of a package is installed, and not just whether it exists
*
* @param string $packageName
* @return string Version constraint usable with composer/semver
*/
public static function getVersionRanges($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
$ranges = array();
if (isset($installed['versions'][$packageName]['pretty_version'])) {
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
}
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
}
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
}
if (array_key_exists('provided', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
}
return implode(' || ', $ranges);
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
*/
public static function getVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['version'])) {
return null;
}
return $installed['versions'][$packageName]['version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
*/
public static function getPrettyVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
return null;
}
return $installed['versions'][$packageName]['pretty_version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
*/
public static function getReference($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['reference'])) {
return null;
}
return $installed['versions'][$packageName]['reference'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
*/
public static function getInstallPath($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @return array
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
*/
public static function getRootPackage()
{
$installed = self::getInstalled();
return $installed[0]['root'];
}
/**
* Returns the raw installed.php data for custom implementations
*
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
* @return array[]
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
*/
public static function getRawData()
{
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
if (null === self::$installed) {
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if (substr(__DIR__, -8, 1) !== 'C') {
self::$installed = include __DIR__ . '/installed.php';
} else {
self::$installed = array();
}
}
return self::$installed;
}
/**
* Returns the raw data of all installed.php which are currently loaded for custom implementations
*
* @return array[]
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
public static function getAllRawData()
{
return self::getInstalled();
}
/**
* Lets you reload the static array from another file
*
* This is only useful for complex integrations in which a project needs to use
* this class but then also needs to execute another project's autoloader in process,
* and wants to ensure both projects have access to their version of installed.php.
*
* A typical case would be PHPUnit, where it would need to make sure it reads all
* the data it needs from this class, then call reload() with
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
* the project in which it runs can then also use this class safely, without
* interference between PHPUnit's dependencies and the project's dependencies.
*
* @param array[] $data A vendor/composer/installed.php data set
* @return void
*
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
*/
public static function reload($data)
{
self::$installed = $data;
self::$installedByVendor = array();
}
/**
* @return array[]
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static function getInstalled()
{
if (null === self::$canGetVendors) {
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
}
$installed = array();
if (self::$canGetVendors) {
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
}
}
}
if (null === self::$installed) {
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if (substr(__DIR__, -8, 1) !== 'C') {
self::$installed = require __DIR__ . '/installed.php';
} else {
self::$installed = array();
}
}
$installed[] = self::$installed;
return $installed;
}
}

View file

@ -13,6 +13,9 @@ class ComposerAutoloaderInitd1f3ddd5074c5b24424f0f0bd620bf26
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::$loader) {

23
TCPDF/vendor/composer/installed.php vendored Normal file
View file

@ -0,0 +1,23 @@
<?php return array(
'root' => array(
'name' => 'tecnickcom/tcpdf',
'pretty_version' => '6.3.5',
'version' => '6.3.5.0',
'reference' => NULL,
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'dev' => true,
),
'versions' => array(
'tecnickcom/tcpdf' => array(
'pretty_version' => '6.3.5',
'version' => '6.3.5.0',
'reference' => NULL,
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'dev_requirement' => false,
),
),
);

View file

@ -0,0 +1,26 @@
<?php
// platform_check.php @generated by Composer
$issues = array();
if (!(PHP_VERSION_ID >= 50300)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 5.3.0". You are running ' . PHP_VERSION . '.';
}
if ($issues) {
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
} elseif (!headers_sent()) {
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
}
}
trigger_error(
'Composer detected issues in your platform: ' . implode(' ', $issues),
E_USER_ERROR
);
}

View file

@ -1,5 +1,6 @@
<?php
$CONVERT_CMD = "/usr/local/bin/pdftk";
$CONVERT_CMD = "/usr/local/bin/convert";
$PDFTK_CMD = "/usr/local/bin/pdftk";
$mailHost = 'mailserver.example.com'; // Specify main and backup server
$mailPort = 587; // Set the SMTP port
@ -9,5 +10,6 @@ $mailPassword = 'mailpasswd'; // SMTP password
$mailSMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mailDest = "someone@example.com";
$mailDestCC = "someone_cc@example.com"; // leave empty if no CC is required
$mailFrom = "someone@example.com";

View file

@ -6,6 +6,6 @@ if (!isset($_POST['id']))
unset( $_SESSION['files'][$_POST['id']] );
error_log("Delete Document $_POST[id]");
#error_log("Delete Document $_POST[id]");

211
form.php Normal file
View file

@ -0,0 +1,211 @@
<h1>
<?php echo $localeYaml['mainheader'][$loc]?>
</h1>
<p>
<?php echo $localeYaml['mainheader_subtext_1'][$loc]?><BR>
<?php echo $localeYaml['mainheader_subtext_2'][$loc]?><BR><BR>
<?php
$ct = @file_get_contents( "./locale/$loc/h1.php");
if ($ct==false)
$ct = file_get_contents( "h1.php");
echo $ct;
?>
</p>
<form data-kube="kaform" name="theform" id="theform" action="submit.php" method="POST">
<fieldset> <legend><?php echo $localeYaml['form_1_header'][$loc]?></legend>
<div class="is-row">
<div class="is-col">
<input required type="input"
size="32" id="projectid" name="project"
placeholder="<?php echo $localeYaml['form_1_placeholder_1'][$loc]?>" />
</div>
</div>
<div class="is-row">
<div class="is-col">
<input required type="input" size="32"
` id="realname" name="realname" placeholder="<?php echo $localeYaml['form_1_placeholder_2'][$loc]?>" />
</div>
<div class="is-col">
<input type="input" size="32"
` id="wmdecontact" name="wmdecontact"
placeholder="<?= $localeYaml['form_1_placeholder_3'][$loc]?>" />
</div>
</div>
<div class="is-row">
<div class="is-col">
<input type="tel" size="32"
id="phone" name="phone"
placeholder="<?= $localeYaml['form_1_placeholder_4'][$loc]?>" />
</div>
<div class="is-col">
</div>
</div>
<div class="is-row">
<div class="is-col">
<input required type="email" size="32" id="email"
name="email" placeholder="<?= $localeYaml['form_1_placeholder_5'][$loc]?>" />
</div>
<div class="is-col">
</div>
</div>
<div class="is-row">
<div class="is-col">
<nav class="tabs" data-kube="tabs" data-equal="false">
<a href="#bank-eu" class="is-active"><?=$localeYaml['form_1_SEPA'][$loc]?></a>
<a href="#bank-noneu"><?=$localeYaml['form_1_noSEPA'][$loc]?></a>
</nav>
<section id="bank-eu">
<div class="is-row">
<div class="is-col">
<input type="input" size="32" name="sepa_owner" placeholder="<?=$localeYaml['form_1_SEPA_placeholder_1'][$loc]?>" />
</div>
<div class="is-col">
</div>
</div>
<div class="is-row">
<div class="is-col">
<input type="input" size="32" id="iban" name="iban" placeholder="<?=$localeYaml['form_1_SEPA_placeholder_2'][$loc]?>" />
</div>
<div class="is-col">
<input type="input" size="32" id="bic" name="bic" placeholder="<?=$localeYaml['form_1_SEPA_placeholder_3'][$loc]?>" />
</div>
</div>
<textarea id="comments" name="comments" style="resize:none;" cols="32" rows="4"
placeholder="<?=$localeYaml['form_1_SEPA_placeholder_4'][$loc]?>"></textarea >
</section>
<section id="bank-noneu">
<div class="is-row">
<div class="is-col">
<input type="input" size="32" name="non_sepa_owner" placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_1'][$loc]?>" />
</div>
<div class="is-col">
<input type="input" size="32" id="n_bic" name="n_bic" placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_2'][$loc]?>" />
</div>
</div>
<div class="is-row">
<div class="is-col">
<input type="input" size="32" id="n_iban" name="n_iban" placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_3'][$loc]?>" />
</div>
<div class="is-col">
<input type="input" size="32" id="n_routing" name="n_routing" placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_4'][$loc]?>" />
</div>
</div>
<input class="EU nonEU" type="input" size="32" id="n_bank" name="n_bankname" placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_5'][$loc]?>" />
<textarea class="nonEU" name="n_bankaddress" id="n_bankaddress" style="resize:both;" cols="32" rows="4"
placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_6'][$loc]?>"></textarea>
<br>
<textarea name="n_address" lang="de" class="nonEU" id="n_address" style="resize:both;" cols="32" rows="4"
placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_7'][$loc]?>"></textarea>
<br>
<textarea id="n_comments" name="n_comments"
style="resize:both;" cols="32" rows="4"
placeholder="<?=$localeYaml['form_1_noSEPA_placeholder_8'][$loc]?>"></textarea>
</section>
</div> <!-- i-col -->
</div> <!-- is-row -->
</fieldset>
<fieldset id="fieldset2"> <legend><?=$localeYaml['form_2_header'][$loc]?></legend>
<div class="is-row">
<div class="is-col">
<?=$localeYaml['form_2_currency'][$loc]?>
</div>
<div class="is-col">
<select onchange="renumberTableRows()" name='currency' id="currency" >
<option value="EUR">EUR</option>
<option value="USD">USD</option>
<option value="CHF">CHF</option>
<option value="XBT">XBT</option>
</select>
</div>
<div class="is-col">
</div>
</div>
<table id="tabtab" class="is-responsive is-bordered is-striped">
<thead>
<tr>
<th><?=$localeYaml['form_2_table_1'][$loc]?></th>
<th><?=$localeYaml['form_2_table_2'][$loc]?></th>
<th><?=$localeYaml['form_2_table_3'][$loc]?></th>
<th><?=$localeYaml['form_2_table_4'][$loc]?></th>
<th><?=$localeYaml['form_2_table_5'][$loc]?></th>
<th><?=$localeYaml['form_2_table_6'][$loc]?></th>
<th><?=$localeYaml['form_2_table_7'][$loc]?></th>
</tr>
</thead>
<tbody id="tabbody">
</tbody>
</table>
<div class="is-col">
<button id="add_issue" type="button" onclick="addRow();"
class="button is-green"><?=$localeYaml['form_2_button'][$loc]?></button>
</div>
</fieldset>
<br>
<fieldset> <legend><?=$localeYaml['form_3_header'][$loc]?></legend>
<div class="is-row">
<div class="is-col valign="center"">
<?=$localeYaml['form_3_subtext_1'][$loc]?>
</div>
<div class="is-col">
<input input name="advance" id="advance" type="text" placeholder="0,00 EUR"/>
</div>
</div>
<div class="is-row">
<div class="is-col valign="center"">
<?=$localeYaml['form_3_subtext_2'][$loc]?>*
</div>
<div class="is-col">
<input id="agree" type="checkbox" />
</div>
</div>
<div class="is-row">
<div class="is-col">
<button type="button" onclick="downloadDocument(false);"
class="button is-orange"><?=$localeYaml['form_3_button_1'][$loc]?></button>
</div>
<div class="is-col">
<button type="button" onclick="downloadDocument(true);"
class="button is-green"><?=$localeYaml['form_3_button_2'][$loc]?></button>
</div>
</div>
</fieldset>
<input type="hidden" id="banktype" name="banktype"/>
<input type="hidden" id="sendmail" name="sendmail"/>
</form>
<?php

15
h1.php
View file

@ -1,17 +1,14 @@
1. Bitte gib zunächst bei <b>Projekt/Zweck der Reise</b> den Namen des von
Wikimedia Deutschland geförderten Projektes/Veranstaltung an, in dessen Rahmen
die Kosten entstanden sind. Bitte rechne die Kosten für jedes geförderte
Projekt/jede Veranstaltung einzeln ab!
die Kosten entstanden sind. Bitte rechne die Kosten für jede Förderung einzeln ab!
<br><br>
2. Befülle das Feld <strong>Deine Ansprechperson bei Wikimedia</strong> mit deiner Kontaktperson
(Beispiel: „Sandro Halank/Ideenförderung“). Damit erleichterst du uns die Zuordnung.
(z. B. die Person, mit der du im Team Communitys und Engagement Kontakt hattest). Damit erleichterst du uns die Zuordnung.
<br><br>
3. Bitte gib jedes mal vollständig deine für die Kostenerstattung relevanten Daten in den
Abschnitten Deine Kontaktdaten sowie Auszahlungsweg an. Die Kontaktdaten benötigen wir für
eventuelle Rückfragen. Die Auszahlungsdaten helfen uns, die Erstattung korrekt durchzuführen.
Sollte das Geld auf ein Konto erstattet werden, welches nicht dir gehört, so gib hierfür eine Begründung an;
diese ist für unsere Buchhaltung essentiell.
3. Bitte gib stets vollständig deine für die Kostenerstattung relevanten Daten in den entsprechenden Feldern an.
Die Kontaktdaten benötigen wir für eventuelle Rückfragen. Die Auszahlungsdaten helfen uns,
die Erstattung korrekt durchzuführen. Sollte das Geld auf ein Konto erstattet werden,
welches nicht dir gehört, so gib hierfür eine Begründung an; diese ist für unsere Buchhaltung essentiell.
<br><br>
4. Die E-Mail-Adresse und die IBAN werden automatisch auf ein korrektes Format geprüft.
Gegebenenfalls wird eine Fehlermeldung angezeigt, wenn diese unvollständig oder fehlerhaft sind.

55
h2.php
View file

@ -1,12 +1,47 @@
Wichtige Hinweise:
- Bitte verwende im Betragsfeld lediglich das Komma zur Trennung zwischen Währung und Dezimalstellen (Beispiel: 1200,00) ohne Währungssymbol.<br>
- Das Formular berechnet selbstständig die Gesamtsumme (nach einem weiteren Klick auf „Ausgabe hinzufügen“).
Die Abrechnung von <a href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">Verpflegungsmehraufwand</a> erfolgt mittels Beleg, den du über dieses
<a href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">Formular</a> erzeugen kannst. Bitte gib ihn in der entsprechenden eigenen Zeile (Pos.) als Ausgabenbeleg dazu an.<br>
- Durch die Software wird ein zusammengefügtes PDF aus Antrag und Anhängen erzeugt.<br>
- Nur wenn du für jede Position einen Beleg/Dokument angegeben hast, kannst du den Antrag auf Kostenerstattung direkt an das Team Ideenförderung senden. Andernfalls steht dir die Möglichkeit zur Verfügung, den Antrag herunterzuladen, später selbst weiter zu bearbeiten und an das Team Ideenförderung zu senden.<br>
<br>
Sollten Fehler oder Fragen auftreten, wende dich gern an community@wikimedia.de.
<br>
<b>Bitte rechne jedes geförderte Projekt bzw. Veranstaltung einzeln ab!</b><br />
1. Bitte gib zunächst im Feld <b>Währung</b> die Währung an, in der die Erstattung stattfinden soll.
Die ausgewählte Währung gilt für den gesamten Antrag auf Kostenerstattung.
Wir bitten dich, vorzugsweise Euro zu verwenden.
<br />
2. Bitte trage pro Zeile (Pos.) eine Ausgabe mit entsprechender Beschreibung ein und
füge einen Beleg als .pdf, .jpg, .png durch Klick auf das entsprechende Feld hinzu.
Fehlerhaft hochgeladene Dateien können mittels Klick auf das <b>x</b> entfernt werden.
Aus der Beschreibung sollte klar werden, ob es sich um Reise-/Transportkosten, Dienstleistung, Materialien,
Verpflegung usw. handelt. Bitte gib jeweils ein Belegdatum an.
<br />
3. Solltest du eine Ausgabe in einer Fremdwährung getätigt haben, so füge für die jeweilige Umrechnung
einen entsprechenden Umrechnungsbeleg zusätzlich an. Dieser ist für jede Position notwendig. Akzeptiert
werden folgende Umrechnungsbelege: Kartenabrechnungen (Kreditkarte oder EC-Karte), Bargeldtausch-Quittung,
<a target="_blank" href="https://sdw.ecb.europa.eu/curConverter.do">Währungsumrechner der Europäischen Zentralbank</a>.
Sollte die Währung nicht im Währungsumrechner der Europäischen Zentralbank vorhanden sein und auch kein
anderweitiger Umrechnungsbeleg vorliegen, so ist
<a target="_blank" href="https://www1.oanda.com/lang/de/currency/converter/">Oanda</a> verwendbar.
<br />
4. Solltest du einen Vorschuss von Wikimedia Deutschland für dieses Projekt/die Veranstaltung erhalten
haben, gib die Höhe dieses unter „3. Vorschuss und Sonstiges“ an.
<br />
5. Bitte bestätige die <b>Vollständig- und Richtigkeit</b> der Angaben mit einem Klick auf das Kästchen.
<br />
6. Klicke abschließend auf „Antrag elektronisch direkt an WMDE schicken“ zur direkten Weiterleitung an
Wikimedia Deutschland oder „Antrag herunterladen und später einreichen”, wenn du noch Änderungen vornehmen
möchtest.
<br /><br />
Wichtige Hinweise:<br />
Das Formular berechnet selbstständig die Gesamtsumme.<br>
Bitte hebe die Belege der einzelnen Positionen bis zum Erhalt der Kostenerstattung auf.<br>
Wenn du eine Kopie des Antrages auf Kostenerstattung benötigen solltest, dann kannst du diesen nach dem Absenden an WMDE als PDF-Datei herunterladen.
<br />
Die Abrechnung von <a target="_blank" href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">Verpflegungsmehraufwand</a>
erfolgt mittels Beleg, den du über dieses <a target="_blank" href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">Formular</a>
erzeugen kannst. Bitte gib ihn in der entsprechenden eigenen Zeile (Pos.) als Ausgabenbeleg dazu an.
<br />
Durch die Software wird ein zusammengefügtes PDF aus Antrag und Anhängen erzeugt.
<br />
Nur wenn du für jede Position einen Beleg/Dokument angegeben hast, kannst du den Antrag auf Kostenerstattung
direkt an Wikimedia Deutschland (WMDE) senden. Andernfalls steht dir die Möglichkeit zur Verfügung, den Antrag herunterzuladen, später selbst weiter zu bearbeiten und an das Team Communitys und Engagement oder deine Ansprechperson für diese Kostenerstattung zu senden.<br>
<br />
Sollten Fehler oder Fragen auftreten, wende dich gern an das Team Communitys und Engagement über <a href="mailto:community@wikimedia.de"> community@wikimedia.de</a> bzw. deine Ansprechperson für diese Kostenerstattung.</a>.

133
index.php Normal file
View file

@ -0,0 +1,133 @@
<!doctype html>
<?php
// parse the locale.yaml file and get the variables
include "Spyc.php";
$localeYaml = Spyc::YAMLLoad('locale.yaml');
$lang=$_GET['lang'];
// optional code for reading the accept language header
/*
$acceptlang='de-DE';
// get the accept-language header
foreach (getallheaders() as $name => $value) {
if ($name == 'Accept-Language'){
// echo "$name $value";
$acceptlang = $value;
}
}
echo "$acceptlang";
print "oi $lang oi";
*/
if ( in_array ($lang, array('en-US'))){
$loc1 = "$lang".".utf8";
$loc = $lang;
}
else
$loc = "de-DE";
//$loc = "en-US";
//print "$loc $loc1";
$domain = "messages";
setlocale(LC_MESSAGES, $loc);
setlocale(LC_ALL, $loc);
$results = putenv("LC_ALL=$loc");
$results = putenv("LC_MESSAGES=$loc");
//$results = bindtextdomain($domain,"./locale");
?>
<html >
<head>
<title><?php echo $localeYaml['title'][$loc]?></title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Kube CSS -->
<link rel="stylesheet" href="css/kube.min.css">
<link rel="stylesheet" href="addons/kube-addons.min.css" />
<link rel="stylesheet" href="master.css" />
</head>
<body>
<div class="page is-container">
<div class="main-sidebar text-centered">
<div id="container">
<img class="wmdelogo" alt="wikimedia logo" src="Wikimedia_Deutschland-Logo.svg"/>
<center>
<a class="languageSelect" href="?lang=de-DE"><?php echo $localeYaml['languageSelectDe'][$loc]?></a><br>
<a class="languageSelect" href="?lang=en-US"><?php echo $localeYaml['languageSelectEn'][$loc]?></a>
</center>
</div>
</div>
<div class="main-content">
<div class="is-row" style="border:0px solid blue">
<div class="is-col is-70">
<?php include "form.php" ?>
</div>
<div class="is-col is-30">
<?php
# $ct = @file_get_contents( "./locale/$loc/h1.php");
# if ($ct==false)
# $ct = file_get_contents( "h1.php");
# echo $ct;
?>
<?php
$ct = @file_get_contents( "./locale/$loc/h2.php");
if ($ct==false)
$ct = file_get_contents( "h2.php");
echo $ct;
?>
</div>
</div>
<?php echo $localeYaml['impressum'][$loc]?>: <a href="https://www.wikimedia.de/impressum/">https://www.wikimedia.de/impressum</a><br>
<?php echo $localeYaml['privacy'][$loc]?>: <a href="<?php echo $localeYaml['privacyLink'][$loc]?>"><?php echo $localeYaml['privacyLink'][$loc]?></a>
</div>
</div>
<script src="js/kube.min.js"></script>
<script src="kaform.js"></script>
<script src="addons/upload/kube.upload.min.js"></script>
<script src="addons/kube-addons.min.js"></script>
<script src="iban.js/iban.js"></script>
<script>
error_alert_projectid = "<?php echo $localeYaml['error_alert_projectid'][$loc]?>";
error_alert_realname = "<?php echo $localeYaml['error_alert_realname'][$loc]?>";
error_alert_email = "<?php echo $localeYaml['error_alert_email'][$loc]?>";
error_alert_iban = "<?php echo $localeYaml['error_alert_iban'][$loc]?>";
error_alert_bic = "<?php echo $localeYaml['error_alert_bic'][$loc]?>";
error_alert_paypal = "<?php echo $localeYaml['error_alert_paypal'][$loc]?>";
error_alert_expenses = "<?php echo $localeYaml['error_alert_expenses'][$loc]?>";
error_alert_agreement = "<?php echo $localeYaml['error_alert_agreement'][$loc]?>";
error_alert_ismailable = "<?php echo $localeYaml['error_alert_ismailable'][$loc]?>";
error_alert_date = "<?php echo $localeYaml['error_alert_date'][$loc]?>";
error_alert_description = "<?php echo $localeYaml['error_alert_description'][$loc]?>";
error_alert_sum = "<?php echo $localeYaml['error_alert_sum'][$loc]?>";
expenses_table_description_placeholder = "<?php echo $localeYaml['expenses_table_description_placeholder'][$loc]?>";
expenses_table_file_placeholder = "<?php echo $localeYaml['expenses_table_file_placeholder'][$loc]?>";
</script>
</body>
</html>

207
ka.php
View file

@ -1,7 +1,29 @@
<!doctype html>
<?php
$lang=$_GET['lang'];
if ( in_array ($lang, array('en_US'))){
$loc = "$lang".".utf8";
$loc1 = $lang;
}
else
$loc = "de_DE";
$domain = "messages";
setlocale(LC_MESSAGES, $loc);
setlocale(LC_ALL, $loc);
$results = putenv("LC_ALL=$loc");
$results = putenv("LC_MESSAGES=$loc");
$results = bindtextdomain($domain,"./locale");
?>
<html >
<head>
<title>Kostenerstattungsforumlar</title>
<title>Kostenerstattungsformular</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
@ -15,16 +37,18 @@
</head>
<body>
<div class="page is-container">
<div class="main-sidebar">
<img alt="wikimedia logo" src="Wikimedia_Deutschland-Logo.svg"/>
</div>
<div class="main-content">
<h1>Antrag auf Kostenerstattung</h1>
<p>Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines
Projektes entstanden sind?<BR>
Bitte fülle dieses Formular aus.
Pflichtfelder sind mit einem * gekennzeichnet.
<div class="main-content">
<h1>
<?php echo _( "Antrag auf Kostenerstattung")?>
</h1>
<p>
<?php echo _("Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes entstanden sind?")?><BR>
<?php echo _("Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * gekennzeichnet.")?>
</p>
<form data-kube="kaform" name="theform" id="theform" action="submit.php" method="POST">
@ -32,35 +56,24 @@
<div class="is-row">
<div class="is-col is-70">
<fieldset>
<legend>1. Erfasse deine Stammdaten</legend>
<legend><?php echo _("1. Erfasse deine Stammdaten")?></legend>
<div class="is-row">
<div class="is-col">
<input required type="input"
size="32" id="projectid" name="project"
placeholder="Projekt/Zweck der Reise*" />
placeholder="<?php echo _("Projekt/Zweck der Reise*")?>" />
</div>
</div>
<!-- <div class="is-row">
<div class="is-col">
<input required type="input"
size="32" id="nickname" name="nickname"
placeholder="Nickname*" />
</div>
<div class="is-col">
<input required type="input"
size="32" id="projectid" name="project"
placeholder="Projekt-ID*" />
</div>
</div>
--> <br>
<br>
<div class="is-row">
<div class="is-col">
<input required type="input" size="32"
` id="realname" name="realname" placeholder="Dein Realname (Vorname Nachname)*" />
` id="realname" name="realname" placeholder="<?php echo _("Dein Realname (Vorname Nachname)*")?>" />
</div>
<div class="is-col">
<input type="input" size="32"
` id="wmdecontact" name="wmdecontact" placeholder="Deine Ansprechperson bei Wikimedia" />
` id="wmdecontact" name="wmdecontact"
placeholder="<?= _("Deine Ansprechperson bei Wikimedia")?>" />
</div>
</div>
<br>
@ -70,7 +83,7 @@
<div class="is-col">
<input type="tel" size="32"
id="phone" name="phone"
placeholder="Deine Telefonnummer" />
placeholder="<?= _("Deine Telefonnummer")?>" />
</div>
<div class="is-col">
</div>
@ -81,7 +94,7 @@
<div class="is-row">
<div class="is-col">
<input required type="email" size="32" id="email"
name="email" placeholder="Deine E-Mail-Adresse*" />
name="email" placeholder="<?= _("Deine E-Mail-Adresse*")?>" />
</div>
<div class="is-col">
</div>
@ -92,8 +105,8 @@
<div class="is-col">
<nav class="tabs" data-kube="tabs" data-equal="false">
<a href="#bank-eu" class="is-active">Banküberweisung</a>
<a href="#bank-noneu">Banküberweisung (Non-EU)</a>
<a href="#bank-eu" class="is-active"><?=_("Banküberweisung")?></a>
<a href="#bank-noneu"><?=_("Banküberweisung (Non-EU)")?></a>
<!-- <a href="#bank-paypal">PayPal</a>
<a href="#bank-bar">Barauszahlung</a>
--> </nav>
@ -101,7 +114,7 @@
<section id="bank-eu">
<div class="is-row">
<div class="is-col">
<input type="input" size="32" name="Owner" placeholder="Kontoinhabende Person" />
<input type="input" size="32" name="Owner" placeholder="<?=_("Kontoinhabende Person")?>" />
</div>
<div class="is-col">
</div>
@ -110,20 +123,20 @@
<div class="is-row">
<div class="is-col">
<input type="input" size="32" id="iban" name="iban" placeholder="IBAN*" />
<input type="input" size="32" id="iban" name="iban" placeholder="<?=_("IBAN*")?>" />
</div>
<div class="is-col">
<input type="input" size="32" id="bic" name="bic" placeholder="BIC (wenn ausländische Bank)" />
<input type="input" size="32" id="bic" name="bic" placeholder="<?=_("BIC (wenn ausländische Bank)")?>" />
</div>
</div>
<br>
<!-- <input type="input" size="32" id="purpose" name="purpose" placeholder="Verwendungszweck" /> -->
<textarea id="comments" name="comments"
style="resize:both;" cols="32" rows="4" placeholder="Weitere Anmerkungen
z.B. intermediäre Bank,
Grund für abweichende Kontoinhbende Person"></textarea>
style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende Kontoinhbende Person")?>">
</textarea >
@ -134,7 +147,7 @@ Grund für abweichende Kontoinhbende Person"></textarea>
<section id="bank-noneu">
<div class="is-row">
<div class="is-col">
<input type="input" size="32" name="Owner" placeholder="Kontoinhabende Person" />
<input type="input" size="32" name="Owner" placeholder="<?=_("Kontoinhabende Person")?>" />
</div>
<div class="is-col">
</div>
@ -143,31 +156,33 @@ Grund für abweichende Kontoinhbende Person"></textarea>
<div class="is-row">
<div class="is-col">
<input type="input" size="32" id="n_iban" name="n_iban" placeholder="Kontonummer*" />
<input type="input" size="32" id="n_iban" name="n_iban" placeholder="<?=_("Kontonummer*")?>" />
</div>
<div class="is-col">
<input type="input" size="32" id="n_bic" name="n_bic" placeholder="BIC/SWIFT*" />
<input type="input" size="32" id="n_bic" name="n_bic" placeholder="<?=_("BIC/SWIFT*")?>" />
</div>
</div>
<br>
<input class="EU nonEU" type="input" size="32" id="n_bank" name="n_bankname" placeholder="Name der Bank*" />
<input class="EU nonEU" type="input" size="32" id="n_bank" name="n_bankname" placeholder="<?="Name der Bank*"?>" />
<br>
<textarea class="nonEU" name="n_bankaddress" id="n_bankaddress" style="resize:both;" cols="32" rows="4" placeholder="Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"></textarea>
<textarea class="nonEU" name="n_bankaddress" id="n_bankaddress" style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)")?>"></textarea>
<br>
<textarea name="n_address" lang="de" class="nonEU" id="n_address" style="resize:both;" cols="32" rows="4" placeholder="Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)
"></textarea>
<textarea name="n_address" lang="de" class="nonEU" id="n_address" style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)")?>">
</textarea>
<br>
<!-- <input type="input" size="32" id="n_purpose" name="n_purpose" placeholder="Verwendungszweck" /> -->
<textarea id="n_comments" name="n_comments"
style="resize:both;" cols="32" rows="4" placeholder="Weitere Anmerkungen
z.B. intermediäre Bank,
Grund für abweichende kontoinhabende Person"></textarea>
style="resize:both;" cols="32" rows="4"
placeholder="<?=_("Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende kontoinhabende Person")?>">
</textarea>
@ -190,7 +205,13 @@ Grund für abweichende kontoinhabende Person"></textarea>
</div>
<div class="is-col ">
<?php include "h1.php"; ?>
<?php
$ct = @file_get_contents( "./locale/$loc1/h1.php");
if ($ct==false)
$ct = file_get_contents( "h1.php");
echo $ct;
?>
</div>
</div> <!-- is row -->
@ -199,74 +220,46 @@ Grund für abweichende kontoinhabende Person"></textarea>
<div class="is-row">
<div class="is-col is-70">
<fieldset id="fieldset2">
<legend>2. Erfasse deine Ausgaben</legend>
<div class="is-row">
<legend><?=_("2. Erfasse deine Ausgaben")?></legend>
<div class="is-col is-70">
<div class="is-row">
<div class="is-col is-60">
<input id="a_date" type="date" name="a_date" placeholder="Datum*"/>
<!-- <input id="a_type" type="text" name="type" placeholder="Auslagenart*"/> -->
<?=_("Währung:")?>
</div>
<div class="is-col is-40">
</div>
</div>
<br>
<input id="a_description" type="text" name="description" placeholder="Beschreibung*"/>
<br>
<div class="is-row">
<div class="is-col">
<input id="a_amount" type="text" name="amount" placeholder="Betrag*"/>
</div>
<div class="is-col">
<select id="a_currency" name="currency" >
<div class="is-col is-20">
<select onchange="renumberTableRows()" id="currency" >
<option value="EUR">EUR</option>
<option value="USD">USD</option>
<option value="CHF">CHF</option>
<option value="XBT">XBT</option>
</select>
<!-- <input id="a_currency" type="text" name="curreny" placeholder="Waehrung*"/> -->
</div>
<div class="is-col">
<button type="button" onclick="addTableRow();"
class="button is-green">Ausgabe hinzuf&uuml;gen</button>
</div>
</select>
</div>
</div>
<div class="is-col is-30">
<div id="uploadfield" class="form-item">
</div>
</div>
</div>
<br>
<table id="tabtab" class="is-bordered is-striped">
<thead>
<tr>
<!-- <th>Auslagenart</th>-->
<th>Pos.</th>
<th>Datum</th>
<th>Beschreibung</th>
<th>Betrag</th>
<th>Belege</th>
<th>L&ouml;schen</th>
<th><?=_("Pos.")?></th>
<th><?=_("Datum")?></th>
<th><?=_("Beschreibung")?></th>
<th><?=_("Betrag")?></th>
<th><?=_("Währung")?></th>
<th><?=_("Belege")?></th>
<th><?=_("L&ouml;schen")?></th>
</tr>
</thead>
<tbody id="tabbody">
</tbody>
</table>
<div class="is-col">
<button id="add_issue" type="button" onclick="addRow();"
class="button is-green"><?=_("Ausgabe hinzuf&uuml;gen")?></button>
</div>
</fieldset>
<br>
<fieldset>
<legend>3. Vorschuss und Sonstiges</legend>
<legend><?=_("3. Vorschuss und Sonstiges")?></legend>
<div class="is-row">
<div class="is-col valign="center"">
Ich habe bereits einen Vorschuss erhalten in
H&ouml;he von:
<?=_("Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:")?>
</div>
<div class="is-col">
<input input name="advance" id="advance" type="text" placeholder="0,00 EUR"/>
@ -276,28 +269,30 @@ Grund für abweichende kontoinhabende Person"></textarea>
<div class="is-row">
<div class="is-col valign="center"">
Ich versichere, dass ich alle Angaben
nach bestem Wissen und Gewissen gemacht habe:
<?=_("Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:")?>*
</div>
<div class="is-col">
<input id="agree" type="checkbox" />
</div>
</div>
</fieldset>
</div>
<div class="is-col">
<?php include "h2.php"; ?>
</div>
</div>
<button type="button" onclick="downloadDocument(true);"
class="button is-green">Antrag elektronisch direkt an WMDE schicken</button>
class="button is-green"><?=_("Antrag elektronisch direkt an WMDE schicken")?></button>
<button type="button" onclick="downloadDocument(false);"
class="button is-orange">Antrag herunterladen und später einreichen</button>
class="button is-orange"><?=_("Antrag herunterladen und später einreichen")?></button>
</div>
<div class="is-col">
<?php
$ct = @file_get_contents( "./locale/$loc1/h2.php");
if ($ct==false)
$ct = file_get_contents( "h2.php");
echo $ct;
?>
</div>
</div>
</div>
</div>
@ -314,8 +309,8 @@ Grund für abweichende kontoinhabende Person"></textarea>
<script src="js/kube.min.js"></script>
<script src="addons/upload/kube.upload.min.js"></script>
<script src="addons/kube-addons.min.js"></script>
<script src="kaform.js"></script>
<script src="iban.js/iban.js"></script>
<script src="js/kaform.js"></script>
</div>
</div>

317
kaform.js
View file

@ -1,21 +1,61 @@
var currentRowId=1;
var banktype = "bank-eu";
function renumberTableRows(){
var cur = document.getElementById("currency").value;
var row_no=1;
var table = document.getElementById("tabbody");
for (var i = 0, row; row = table.rows[i]; i++) {
row.cells[0].innerHTML=row_no++;
row.cells[4].innerHTML=cur;
}
return i;
}
function checkAllRows(){
var row_no=1;
var table = document.getElementById("tabbody");
for (var i = 0, row; row = table.rows[i]; i++) {
// row.cells[0].innerHTML=row_no++;
//
var f=1
var v =row.cells[f].firstElementChild.value;
if ( !v ){ // Datum
row.cells[f].firstElementChild.focus();
showAlert(error_alert_date);
return false;
}
f=2;
v =row.cells[f].firstElementChild.value;
if ( !v ){ // Datum
row.cells[f].firstElementChild.focus();
showAlert(error_alert_description);
return false;
}
f=3;
v =row.cells[f].firstElementChild.value;
if ( !isFloat(v) ){ // Amount
row.cells[f].firstElementChild.focus();
showAlert(error_alert_sum);
return false;
}
}
return true;
}
function isMailable(){
var row_no=1;
var table = document.getElementById("tabbody");
for (var i = 0, row; row = table.rows[i]; i++) {
var pdfs = row.cells[4].innerHTML;
pdfs = row.cells[5].querySelector('input[name="file-count"]').value;
if (pdfs==0)
return false;
}
@ -23,6 +63,7 @@ function isMailable(){
}
function isFloat(val) {
var floatRegex = /^-?\d+(?:[.,]\d*?)?$/;
if (!floatRegex.test(val))
@ -35,23 +76,9 @@ function isFloat(val) {
}
/**
* grey-out currency iselection if there is at least one document is atatched.
*/
function disableCurrency()
{
if (countRows()>0){
document.getElementById("a_currency").disabled=true;
}
else {
document.getElementById("a_currency").disabled=false;
}
}
function deleteTableRow(rowId){
var target = document.getElementById("upload-target"+rowId);
// this.message = app.message;
// var children = target.children;
@ -75,182 +102,117 @@ function deleteTableRow(rowId){
var element = document.getElementById("trow"+rowId);
element.parentNode.removeChild(element);
disableCurrency();
renumberTableRows();
// alert(rowId);
}
function countRows(){
var ctr=0;
for (i=0; i<currentRowId; i++){
var element = document.getElementById("trow"+i);
if (element)
ctr++
}
return ctr;
return renumberTableRows();
}
function showAlert(text) {
$K.app.message.show( { message: `${text}`, position: 'centered', type: 'is-error' });
return;
}
function reset2()
function setTableRow(id)
{
// document.getElementById("a_type").value="";
document.getElementById("a_description").value="";
document.getElementById("a_amount").value="";
setUploadField();
}
function addTableRow(){
var $node = $K.dom('#tabbody');
// create a new table row with id
var element = document.createElement('tr');
element.setAttribute("id", "trow"+currentRowId);
element.setAttribute("id", "trow"+id);
/* var a_type = document.getElementById("a_type").value;
if (!a_type.trim().length ) {
document.getElementById("a_type").focus();
showAlert("Bitte gib eine Auslagenart an!");
return;
}
*/
var a_date = document.getElementById("a_date").value;
if (!a_date.trim().length){
document.getElementById("a_date").focus();
showAlert("Bitte gib ein g&uuml;ltiges Datum an!");
return;
}
var a_description = document.getElementById("a_description").value;
if (!a_description.trim().length){
document.getElementById("a_description").focus();
showAlert("Bitte gib eine Beschreibung ein!");
return;
}
var a_amount = document.getElementById("a_amount").value;
if (!isFloat(a_amount)){
document.getElementById("a_amount").focus();
showAlert("Bitte gib einen g&uuml;ltigen Betrag ein!");
return;
}
a_amount = parseFloat(a_amount).toFixed(2);
var a_currency = document.getElementById("a_currency").value;
/* if (!a_currency.trim().length){
document.getElementById("a_currency").focus();
showAlert("Bitte gib eine W&auml;hrung an!");
return;
}
*/
var target = document.getElementById("upload-target"+currentRowId);
var children = target.children;
if (!children.length){
// showAlert("Bitte lade mindestens einen Beleg hoch!");
// return;
}
/* a_type = "Hello";*/
var e="<td></td>";
// add column for position no
// e += `<td>${a_type}
// <input type="hidden" name="type[${currentRowId}]" value="${a_type}" /></td>`;
// add coluemn for a_type (Auslagenart)
// e += `<td><textarea name="desc[${nextRowId}]" rows="2"></textarea> </td>`;
e += `<td>${a_date}
var e
e = `<td>${a_date}
<input type="hidden" name="date[${currentRowId}]" value="${a_date}" /></td>`;
// add column for date
// e += `<td><input name="date[${nextRowId}]" type="date"/></td>`;
e += `<td>${a_description}
<input type="hidden" name="description[${currentRowId}]" value="${a_description}" /></td>`;
// add column for num
e += `<td>${a_amount} EUR
<input type="hidden" name="amount[${currentRowId}]" value="${a_amount}" /></td>`;
// add column for file upload
/* e+= `
<td data-kube="">
<div class="form-item">
<div class="upload"
data-kube="upload"
data-type="file" data-multiple="true"
data-target="#upload-target${nextRowId}"
data-url="upload.php?row=${nextRowId}" data-url-remove="delete.php"
data-progress="true">
</div>
<div id="upload-target${nextRowId}" class="upload-target"></div>
</div>
</td>
*/
var ulfiles = children.length;
e += `<td>${ulfiles}</td>`;
// `;
// add delete bnutton
e +=
`<td><span
onclick="deleteTableRow(${currentRowId})"
class="close is-large">
</span></td>`;
$node.append(element);
element.innerHTML=(e);
renumberTableRows();
currentRowId++;
reset2();
disableCurrency();
}
function setUploadField()
function getUploadField(rid)
{
var e = $K.dom('#uploadfield');
var uf =`<div class="upload"
data-kube="upload"
data-type="file" data-multiple="true"
data-target="#upload-target${currentRowId}"
data-url="upload.php?row=${currentRowId}" data-url-remove="delete.php"
data-progress="true">Beleg(e) hochladen
data-type="file"
data-multiple="true"
data-target="#upload-target${rid}"
data-url="upload.php?row=${rid}" data-url-remove="delete.php"
data-progress="true"
data-size="40"
data-placeholder="` + expenses_table_file_placeholder + `">
</div>
<div id="upload-target${currentRowId}" class="upload-target small"></div>
<div id="upload-target${rid}" class="upload-target small"></div>
</div>
`;
document.getElementById("uploadfield").innerHTML=uf;
return uf;
}
function getRow(rid,num) {
var cur = document.getElementById("currency").value;
return ""
+ "<td data-label=\"Pos\">"
+ `${num}`
+"</td>"
+ "<td data-label=\"Datum\">"
+ `<input class="tab_input" name="date[${rid}]" value="" type="date" placeholder="Datum*"/>`
+ "</td>"
+ "<td data-label=\"Beschr.\">"
+ `<input class="tab_input" name="desc[${rid}]" type="text" placeholder="` + expenses_table_description_placeholder + `"/>`
+ "</td>"
+ "<td data-label=\"Betrag\">"
+ `<input class="tab_input" name="amount[${rid}] type="text" placeholder="0.00"/>`
+ "</td>"
+ "<td data-label=\"W&auml;hrung\" style=\"vertical-align: middle\">"
+ cur
// +
// `<select name="currency[${rid}]" >
// <option value="EUR">EUR</option>
// <option value="USD">USD</option>
// <option value="CHF">CHF</option>
// <option value="XBT">XBT</option>
// </select>`
+ "</td>"
+ "<td>"
+ getUploadField(rid)
+ "</td>"
+
`<td><span
onclick="deleteTableRow(${rid})"
class="close is-large">
</span>
</td>`;
}
var nextRid = 1
function addRow() {
var $node = $K.dom('#tabbody');
var e = getRow(nextRid,1);
var element = document.createElement('tr');
element.setAttribute("id", "trow"+nextRid);
$node.append(element);
element.innerHTML=(e);
renumberTableRows();
nextRid++;
}
$K.add('module', 'kaform', {
init: function(app, context)
{
@ -268,8 +230,6 @@ $K.add('module', 'kaform', {
console.log(banktype);
// console.log(sender);
// this.message.show({ message: 'My message' });
}
@ -280,7 +240,8 @@ $K.add('module', 'kaform', {
});
$K.init({
observer: true
observer: true,
lang: 'en'
});
@ -297,8 +258,6 @@ $K.ajax.get({
error: function(response) {}
});
setUploadField();
function check_field(fieldid,message){
var f = document.getElementById(fieldid).value;
@ -327,25 +286,31 @@ function downloadDocument1(){
function downloadDocument(mail)
{
if (!check_field("projectid", "Bitte gib einen Projektnamen/Zweck der Reise an!"))
if (!checkAllRows())
return;
if (!check_field("realname", "Bitte gib deinen Realnamen an!"))
if (!check_field("projectid", error_alert_projectid))
return;
if (!check_field("email", "Bitte gib deinen E-Mail-Adresse an!"))
if (!check_field("realname", error_alert_realname))
return;
if (!check_field("email", error_alert_email))
return;
if (banktype == "bank-eu"){
iban = document.getElementById('iban');
if (!IBAN.isValid(iban.value)){
document.getElementById("iban").focus();
showAlert("Bitte gib eine korrekte IBAN ein!");
showAlert(error_alert_iban);
return;
}
/* if (!document.getElementById('bic').value.trim().length){
document.getElementById("bic").focus();
showAlert("Bitte gib einen korrekte BIC an!");
showAlert(error_alert_bic);
return;
}
@ -356,22 +321,28 @@ function downloadDocument(mail)
ii = document.getElementById('paypal');
if (!document.getElementById('paypal').value.trim().length){
document.getElementById("paypal").focus();
showAlert("Bitte gib einen PayPal Account an!");
showAlert(error_alert_paypal);
return;
}
}
if (countRows()==0){
document.getElementById("a_description").focus();
showAlert("Bitte f&uuml;ge mind. eine Auslage hinzu!");
document.getElementById("add_issue").focus();
showAlert(error_alert_expenses);
return;
}
if (!document.getElementById("agree").checked){
document.getElementById("agree").focus();
showAlert(error_alert_agreement);
return;
};
if (mail){
if (!isMailable()){
showAlert("Um den Antrag elektronisch direkt an WMDE zu schicken, muss jeder Position ein Beleg beigef&uuml;gt sein.");
showAlert(error_alert_ismailable);
return;
}
@ -387,12 +358,6 @@ function downloadDocument(mail)
document.getElementById('banktype').value=banktype;
document.getElementById("theform").submit();
if (!document.getElementById("agree").checked){
document.getElementById("agree").focus();
showAlert("Bitte best&auml;tige, dass du alle Angaben nach bestem Wissen und Gewissen gemacht hast!");
return;
};
}

212
locale.yaml Normal file
View file

@ -0,0 +1,212 @@
# KostenerstattungAntragsformular wikimedia Deutschland
title:
de-DE: Kostenerstattungsformular
en-US: Reimbursement Form
mainheader:
de-DE: Antrag auf Kostenerstattung
en-US: Claim of Reimbursement
mainheader_subtext_1:
de-DE: Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes entstanden sind?
en-US: You would like to be reimbursed for costs incurred in the course of your project?
mainheader_subtext_2:
de-DE: Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * gekennzeichnet.
en-US: Please fill out this form. Mandatory fields are marked with *.
header1_1:
de-DE: 1. Bitte gib zunächst bei Projekt/Zweck der Reise den Namen des von Wikimedia Deutschland geförderten Projektes/Veranstaltung an, in dessen Rahmen die Kosten entstanden sind. Bitte rechne die Kosten für jede Förderung einzeln ab!
en-US: world
header1_2:
de-DE: 2. Befülle das Feld <b>Deine Ansprechperson bei Wikimedia </b> mit deiner Kontaktperson (z. B. die Person, mit der du im Team Communitys und Engagement Kontakt hattest). Damit erleichterst du uns die Zuordnung.
en-US: world
header1_3:
de-DE: Welt
en-US: world
header1_4:
de-DE: 4. Die E-Mail-Adresse und die IBAN werden automatisch auf ein korrektes Format geprüft. Gegebenenfalls wird eine Fehlermeldung angezeigt, wenn diese unvollständig oder fehlerhaft sind.
en-US: world
header2_header:
de-DE: <br><br><b>Bitte rechne jedes geförderte Projekt bzw. Veranstaltung einzeln ab!</b><br />
en-US: world
header2_1:
de-DE: 1. Bitte gib zunächst im Feld <b>Währung</b> die Währung an, in der die Erstattung stattfinden soll. Die ausgewählte Währung gilt für den gesamten Antrag auf Kostenerstattung. Wir bitten dich, vorzugsweise Euro zu verwenden.<br />
en-US: world
header2_2:
de-DE: 2. Bitte trage pro Zeile (Pos.) eine Ausgabe mit entsprechender Beschreibung ein und füge einen Beleg als .pdf, .jpg, .png durch Klick auf das entsprechende Feld hinzu. Fehlerhaft hochgeladene Dateien können mittels Klick auf das <b>x</b> entfernt werden. Aus der Beschreibung sollte klar werden, ob es sich um Reise-/Transportkosten, Dienstleistung, Materialien, Verpflegung usw. handelt. Bitte gib jeweils ein Belegdatum an.<br />
en-US: world
header2_3:
de-DE: "3. Solltest du eine Ausgabe in einer Fremdwährung getätigt haben, so füge für die jeweilige Umrechnung einen entsprechenden Umrechnungsbeleg zusätzlich an. Dieser ist für jede Position notwendig. Akzeptiert werden folgende Umrechnungsbelege: Kartenabrechnungen (Kreditkarte oder EC-Karte), Bargeldtausch-Quittung, <a target="_blank" href="https://sdw.ecb.europa.eu/curConverter.do">Währungsumrechner der Europäischen Zentralbank</a>. Sollte die Währung nicht im Währungsumrechner der Europäischen Zentralbank vorhanden sein und auch kein anderweitiger Umrechnungsbeleg vorliegen, so ist <a target="_blank" href="https://www1.oanda.com/lang/de/currency/converter/">Oanda</a> verwendbar.<br />"
en-US: world
header2_4:
de-DE: 4. Solltest du einen Vorschuss von Wikimedia Deutschland für dieses Projekt/die Veranstaltung erhalten haben, gib die Höhe dieses unter „3. Vorschuss und Sonstiges“ an.<br />
en-US: world
header2_5:
de-DE: 5. Bitte bestätige die <b>Vollständig- und Richtigkeit</b> der Angaben mit einem Klick auf das Kästchen.<br />
en-US: world
header2_6:
de-DE: 6. Klicke abschließend auf „Antrag elektronisch direkt an WMDE schicken“ zur direkten Weiterleitung an Wikimedia Deutschland oder „Antrag herunterladen und später einreichen”, wenn du noch Änderungen vornehmen möchtest.<br /><br />
en-US: world
header2_note:
de-DE: Wichtige Hinweise:<br /> Das Formular berechnet selbstständig die Gesamtsumme.<br> Bitte hebe die Belege der einzelnen Positionen bis zum Erhalt der Kostenerstattung auf.<br> Wenn du eine Kopie des Antrages auf Kostenerstattung benötigen solltest, dann kannst du diesen nach dem Absenden an WMDE als PDF-Datei herunterladen.<br /> Die Abrechnung von <a target="_blank" href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">Verpflegungsmehraufwand</a> erfolgt mittels Beleg, den du über dieses <a target="_blank" href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">Formular</a> erzeugen kannst. Bitte gib ihn in der entsprechenden eigenen Zeile (Pos.) als Ausgabenbeleg dazu an.<br /> Durch die Software wird ein zusammengefügtes PDF aus Antrag und Anhängen erzeugt.<br /> Nur wenn du für jede Position einen Beleg/Dokument angegeben hast, kannst du den Antrag auf Kostenerstattung direkt an Wikimedia Deutschland (WMDE) senden. Andernfalls steht dir die Möglichkeit zur Verfügung, den Antrag herunterzuladen, später selbst weiter zu bearbeiten und an das Team Communitys und Engagement zu senden.<br><br />Sollten Fehler oder Fragen auftreten, wende dich gern an <a href="mailto:community@wikimedia.de">community@wikimedia.de</a>.
en-US: world
form_1_header:
de-DE: 1. Erfasse deine Stammdaten
en-US: 1. Enter your master data
form_1_placeholder_1:
de-DE: Projekt/Zweck der Reise*
en-US: Project/Purpose of travel*
form_1_placeholder_2:
de-DE: Dein Realname (Vorname Nachname)*
en-US: Full legal name*
form_1_placeholder_3:
de-DE: Deine Ansprechperson bei Wikimedia
en-US: Your contact person at Wikimedia
form_1_placeholder_4:
de-DE: Deine Telefonnummer
en-US: Your phone number
form_1_placeholder_5:
de-DE: Deine Email-Adresse*
en-US: Your email address*
form_1_SEPA:
de-DE: Banküberweisung (SEPA)
en-US: Bank transfer (SEPA)
form_1_noSEPA:
de-DE: Banküberweisung (Non-EU)
en-US: Bank transfer (Non-EU)
form_1_SEPA_placeholder_1:
de-DE: Kontoinhabende Person
en-US: Account Holder
form_1_SEPA_placeholder_2:
de-DE: IBAN*
en-US: IBAN*
form_1_SEPA_placeholder_3:
de-DE: BIC (wenn ausländische Bank)
en-US: BIC (if foreign bank)
form_1_SEPA_placeholder_4:
de-DE: Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende kontoinhabende Person
en-US: Other comments e.g. intermediary bank, reason for different account login person
form_1_noSEPA_placeholder_1:
de-DE: Kontoinhabende Person*
en-US: Account login person
form_1_noSEPA_placeholder_2:
de-DE: BIC/SWIFT*
en-US: BIC/SWIFT*
form_1_noSEPA_placeholder_3:
de-DE: Kontonummer*
en-US: Account number*
form_1_noSEPA_placeholder_4:
de-DE: Routing Number
en-US: Routing number
form_1_noSEPA_placeholder_5:
de-DE: Name der Bank*
en-US: Name of the bank*
form_1_noSEPA_placeholder_6:
de-DE: Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)
en-US: Address of the bank (street and house number/postcode/country)
form_1_noSEPA_placeholder_7:
de-DE: Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)*
en-US: Your address (street and house number/postcode/country)*
form_1_noSEPA_placeholder_8:
de-DE: Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende kontoinhabende Person
en-US: Other comments e.g. intermediary bank, reason for different account login person
form_2_header:
de-DE: 2. Erfasse deine Ausgaben
en-US: 2. Enter your expenses
form_2_currency:
de-DE: 'Währung:'
en-US: Currency
form_2_table_1:
de-DE: Pos.
en-US: Pos
form_2_table_2:
de-DE: Datum
en-US: Date
form_2_table_3:
de-DE: Beschreibung
en-US: Description
form_2_table_4:
de-DE: Betrag
en-US: Amouńt
form_2_table_5:
de-DE: Währung
en-US: Currency
form_2_table_6:
de-DE: Belege
en-US: Receipts
form_2_table_7:
de-DE: L&ouml;schen
en-US: Delete
form_2_button:
de-DE: Ausgabe hinzuf&uuml;gen
en-US: Add expense
form_3_header:
de-DE: 3. Vorschuss und Sonstiges
en-US: 3. Advance payment and other
form_3_subtext_1:
de-DE: 'Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:'
en-US: 'I have already received an advance in the amount of:'
form_3_subtext_2:
de-DE: 'Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:'
en-US: 'Herewith I confirm the completeness and correctness of my data:'
form_3_button_1:
de-DE: Antrag herunterladen und später einreichen
en-US: Download reimbursement claim and submit later
form_3_button_2:
de-DE: Antrag elektronisch direkt an WMDE schicken
en-US: Send reimbursement claim electronically directly to WMDE
error_alert_projectid:
de-DE: Bitte gib einen Projektnamen/ Grund der Reise an!
en-US: Please enter a project name / reason of travel!
error_alert_realname:
de-DE: Bitte gib deinen Realnamen an!
en-US: Please enter your realname!
error_alert_email:
de-DE: Bitte gib deine E-mail-Adresse an!
en-US: Please enter a valid email address!
error_alert_iban:
de-DE: Bitte gib eine korrekte IBAN ein!
en-US: Please enter a correct IBAN!
error_alert_bic:
de-DE: Bitte gib eine korrekte BIC an!
en-US: Please enter a correct BIC!
error_alert_paypal:
de-DE: Bitte gib einen PayPal Account an!
en-US: Please enter your PayPal account!
error_alert_expenses:
de-DE: Bitte füge mindestens eine Auslage hinzu!
en-US: Please add at least one expense!
error_alert_agreement:
de-DE: Bitte best&auml;tige, dass du alle Angaben nach bestem Wissen und Gewissen gemacht hast!
en-US: Please confirm that you have provided all information to the best of your knowledge and belief!
error_alert_ismailable:
de-DE: Um den Antrag elektronisch direkt an WMDE zu schicken, muss jeder Position ein Beleg beigef&uuml;gt sein.
en-US: To submit the application electronically directly to WMDE, a receipt must be attached to each line item.
error_alert_date:
de-DE: Bitte gib ein gültiges Datum an!
en-US: Please enter a valid date!
error_alert_description:
de-DE: Bitte gib eine Beschreibung ein!
en-US: Please enter a description!
error_alert_sum:
de-DE: Bitte gib einen gültigen Betrag ein!
en-US: Please enter a valid sum!
expenses_table_description_placeholder:
de-DE: Beschreibung
en-US: Description
expenses_table_file_placeholder:
de-DE: Datei
en-US: File
impressum:
de-DE: Impressum
en-US: Imprint
privacy:
de-DE: Datenschutz
en-US: Data Protection
privacyLink:
de-DE: "https://www.wikimedia.de/datenschutz/"
en-US: "https://www.wikimedia.de/datenschutz/#dataprivacy"
languageSelectDe:
de-DE: <b>Deutsch</b>
en-US: Deutsch
languageSelectEn:
de-DE: English
en-US: <b>English</b>

View file

@ -0,0 +1,179 @@
# German translations for apache package.
# Copyright (C) 2021 THE apache'S COPYRIGHT HOLDER
# This file is distributed under the same license as the apache package.
# Charlie & <root@bsd>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: apache 24\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-07 20:39+0200\n"
"PO-Revision-Date: 2021-07-06 18:21+0200\n"
"Last-Translator: Charlie & <root@bsd>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ka.php:29
msgid "Kostenerstattungsformular"
msgstr "Reimbursement Claim Formular"
#: ka.php:48
msgid "Antrag auf Kostenerstattung"
msgstr "Reimbursement Claim"
#: ka.php:51
msgid ""
"Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes "
"entstanden sind?"
msgstr ""
"You would like to be reimbursed for costs incurred in the course of your "
"project?"
#: ka.php:52
msgid ""
"Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * "
"gekennzeichnet."
msgstr "Please fill out this form. Mandatory fields are marked with *."
#: ka.php:60
msgid "1. Erfasse deine Stammdaten"
msgstr "1. Enter your master data"
#: ka.php:65
msgid "Projekt/Zweck der Reise*"
msgstr "Project/Purpose of travel*"
#: ka.php:72
msgid "Dein Realname (Vorname Nachname)*"
msgstr "Full legal name*"
#: ka.php:77
msgid "Deine Ansprechperson bei Wikimedia"
msgstr "Your contact person at Wikimedia"
#: ka.php:87
msgid "Deine Telefonnummer"
msgstr "Your phone number"
#: ka.php:98
msgid "Deine E-Mail-Adresse*"
msgstr "Your email address*"
#: ka.php:109
msgid "Banküberweisung"
msgstr "Bank transfer"
#: ka.php:110
msgid "Banküberweisung (Non-EU)"
msgstr "Bank transfer (Non-EU)"
#: ka.php:118 ka.php:151
msgid "Kontoinhabende Person"
msgstr "Account holder"
#: ka.php:127
msgid "IBAN*"
msgstr "IBAN*"
#: ka.php:132
msgid "BIC (wenn ausländische Bank)"
msgstr "BIC (if foreign bank)"
#: ka.php:139
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende "
"Kontoinhbende Person"
msgstr ""
"Other comments e.g. intermediary bank, reason for different account login "
"person"
#: ka.php:160
msgid "Kontonummer*"
msgstr "Account number*"
#: ka.php:165
msgid "BIC/SWIFT*"
msgstr "BIC/SWIFT*"
#: ka.php:173
msgid "Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr "Address of the bank (street and house number/postcode/country)"
#: ka.php:176
#, fuzzy
msgid "Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr "Your address (street and house number/postcode/country)"
#: ka.php:185
#, fuzzy
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende "
"kontoinhabende Person"
msgstr ""
"Other comments e.g. intermediary bank, reason for different account login "
"person"
#: ka.php:224
#, fuzzy
msgid "2. Erfasse deine Ausgaben"
msgstr "2. Enter your expenses"
#: ka.php:226
msgid "Währung:"
msgstr "Currency:"
#: ka.php:240
msgid "Pos."
msgstr "Pos."
#: ka.php:241
msgid "Datum"
msgstr "Date"
#: ka.php:242
msgid "Beschreibung"
msgstr "Description"
#: ka.php:243
msgid "Betrag"
msgstr "Amount"
#: ka.php:244
msgid "Währung"
msgstr "Currency"
#: ka.php:245
msgid "Belege"
msgstr "Receipts"
#: ka.php:246
msgid "L&ouml;schen"
msgstr "Delete"
#: ka.php:254
msgid "Ausgabe hinzuf&uuml;gen"
msgstr "Add expense"
#: ka.php:260
msgid "3. Vorschuss und Sonstiges"
msgstr "3. Advance payment and other"
#: ka.php:263
msgid "Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:"
msgstr "I have already received an advance in the amount of:"
#: ka.php:273
msgid "Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:"
msgstr "Herewith I confirm the completeness and correctness of my data:"
#: ka.php:281
msgid "Antrag elektronisch direkt an WMDE schicken"
msgstr "Send reimbursement claim electronically directly to WMDE"
#: ka.php:284
msgid "Antrag herunterladen und später einreichen"
msgstr "Download reimbursement claim and submit later"

14
locale/en-US/h1.php Normal file
View file

@ -0,0 +1,14 @@
1. Please first state the name of your <b>Project/Purpose of travel</b> supported by
Wikimedia Deutschland, in the context of which the costs were incurred.
Please calculate the costs for each funding individually!
<br><br>
2. Fill in your <b>contact person at Wikimedia</b>.
This makes it easier for us to match you.
<br><br>
3. Each time, please enter your complete data relevant for the reimbursement of costs. We need these details for
any queries you could have. The payout details help us to carry out the refund correctly.
If the money is refunded to an account that does not belong to you, please give a reason;
this is essential for our accounting.
<br><br>
4. The email address and IBAN are automatically checked for correct format. If necessary,
an error message will be displayed if these are incomplete or incorrect.

46
locale/en-US/h2.php Normal file
View file

@ -0,0 +1,46 @@
<b>
Please calculate the costs for each funding individually!
</b
><br />
1. Please first state in the field <b>Currency</b> the currency in which the reimbursement
should be proceeded. The selected currency applies to the entire reimbursement claim.
We kindly you to use Euro preferably.
<br />
2. Please state <b>one</b> expense, receipt, document as explanation per line (Pos.) with corresponding description and
attach a receipt as .pdf, .jpg, .png by clicking on the corresponding field.
Files uploaded incorrectly can be removed by clicking on the <b>x</b>.
The explanation should clarify the type of expenses,
e.g. transportation, service, catering. Please always state the date of the receipt.
<br />
3. In the case expenses in foreign currencies have occurred in your project, please attach
for each conversion an additional file where the conversion rate is indicated. These proofs for
conversion rates are accepted: Card billing (credit or debit card), Cash currency exchange receipt,
<a href="https://sdw.ecb.europa.eu/curConverter.do">Currency converter of the European Central Bank.</a>
If there is no exchange course in the currency converter of the European Central Bank and no other proof available,
please use <a href="https://www1.oanda.com/lang/de/currency/converter/">Oanda</a>.
<br />
4. In the case an advance payment had been granted by Wikimedia Deutschland for the project/event,
please state the amount in the “advance payment and other” field.
<br />
5. Please confirm the <b>completeness and correctness</b> of your data by clicking the box.
<br />
6. Finally, click on “Send reimbursement claim electronically directly to WMDE” for direct forwarding
the reimbursement claim to Wikimedia Deutschland or “Download reimbursement claim and submit later” if you still want
to make changes.
<br /><br />
Important instructions:<br />
The form will calculate the total amount on its own.
<br />
The settlement of <a href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">“per diem”</a>
is done by a receipt, which you can generate by using the <a href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">form</a>.
Please enter it in a appropriate separate line (Pos.) as an expense.
<br />
A merged PDF of the reimbursement claim and the attachments will be generated by the software.
<br />
Only if you uploaded a receipt/document for each item, you can send the reimbursement claim
directly to Wikimedia Deutschland (WMDE). Otherwise, you have the option of downloading the reimbursement claim,
edit it yourself later and send it to Wikimedia Deutschland.<br>
<br />
If there are any errors or questions, feel free to contact the Communities and Engagement Team via <a href="mailto:community@wikimedia.de">community@wikimedia.de</a> or your contact person.

View file

@ -0,0 +1,179 @@
# German translations for apache package.
# Copyright (C) 2021 THE apache'S COPYRIGHT HOLDER
# This file is distributed under the same license as the apache package.
# Charlie & <root@bsd>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: apache 24\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-07 20:39+0200\n"
"PO-Revision-Date: 2021-07-06 18:21+0200\n"
"Last-Translator: Charlie & <root@bsd>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ka.php:29
msgid "Kostenerstattungsformular"
msgstr "Reimbursement Claim Formular"
#: ka.php:48
msgid "Antrag auf Kostenerstattung"
msgstr "Reimbursement Claim"
#: ka.php:51
msgid ""
"Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes "
"entstanden sind?"
msgstr ""
"You would like to be reimbursed for costs incurred in the course of your "
"project?"
#: ka.php:52
msgid ""
"Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * "
"gekennzeichnet."
msgstr "Please fill out this form. Mandatory fields are marked with *."
#: ka.php:60
msgid "1. Erfasse deine Stammdaten"
msgstr "1. Enter your master data"
#: ka.php:65
msgid "Projekt/Zweck der Reise*"
msgstr "Project/Purpose of travel*"
#: ka.php:72
msgid "Dein Realname (Vorname Nachname)*"
msgstr "Full legal name*"
#: ka.php:77
msgid "Deine Ansprechperson bei Wikimedia"
msgstr "Your contact person at Wikimedia"
#: ka.php:87
msgid "Deine Telefonnummer"
msgstr "Your phone number"
#: ka.php:98
msgid "Deine E-Mail-Adresse*"
msgstr "Your email address*"
#: ka.php:109
msgid "Banküberweisung"
msgstr "Bank transfer"
#: ka.php:110
msgid "Banküberweisung (Non-EU)"
msgstr "Bank transfer (Non-EU)"
#: ka.php:118 ka.php:151
msgid "Kontoinhabende Person"
msgstr "Account holder"
#: ka.php:127
msgid "IBAN*"
msgstr "IBAN*"
#: ka.php:132
msgid "BIC (wenn ausländische Bank)"
msgstr "BIC (if foreign bank)"
#: ka.php:139
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende "
"Kontoinhbende Person"
msgstr ""
"Other comments e.g. intermediary bank, reason for different account login "
"person"
#: ka.php:160
msgid "Kontonummer*"
msgstr "Account number*"
#: ka.php:165
msgid "BIC/SWIFT*"
msgstr "BIC/SWIFT*"
#: ka.php:173
msgid "Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr "Address of the bank (street and house number/postcode/country)"
#: ka.php:176
#, fuzzy
msgid "Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr "Your address (street and house number/postcode/country)"
#: ka.php:185
#, fuzzy
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende "
"kontoinhabende Person"
msgstr ""
"Other comments e.g. intermediary bank, reason for different account login "
"person"
#: ka.php:224
#, fuzzy
msgid "2. Erfasse deine Ausgaben"
msgstr "2. Enter your expenses"
#: ka.php:226
msgid "Währung:"
msgstr "Currency:"
#: ka.php:240
msgid "Pos."
msgstr "Pos."
#: ka.php:241
msgid "Datum"
msgstr "Date"
#: ka.php:242
msgid "Beschreibung"
msgstr "Description"
#: ka.php:243
msgid "Betrag"
msgstr "Amount"
#: ka.php:244
msgid "Währung"
msgstr "Currency"
#: ka.php:245
msgid "Belege"
msgstr "Receipts"
#: ka.php:246
msgid "L&ouml;schen"
msgstr "Delete"
#: ka.php:254
msgid "Ausgabe hinzuf&uuml;gen"
msgstr "Add expense"
#: ka.php:260
msgid "3. Vorschuss und Sonstiges"
msgstr "3. Advance payment and other"
#: ka.php:263
msgid "Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:"
msgstr "I have already received an advance in the amount of:"
#: ka.php:273
msgid "Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:"
msgstr "Herewith I confirm the completeness and correctness of my data:"
#: ka.php:281
msgid "Antrag elektronisch direkt an WMDE schicken"
msgstr "Send reimbursement claim electronically directly to WMDE"
#: ka.php:284
msgid "Antrag herunterladen und später einreichen"
msgstr "Download reimbursement claim and submit later"

14
locale/en_US/h1.php Normal file
View file

@ -0,0 +1,14 @@
1. Please first state the name of your <b>Project/Purpose of travel</b> supported by
Wikimedia Deutschland, in the context of which the costs were incurred.
Please calculate the costs for each funding individually!
<br><br>
2. Fill in your <b>contact person at Wikimedia</b>
(example: “Sandro Halank/Volunteer Support”). This makes it easier for us to match you.
<br><br>
3. Each time, please enter your complete data relevant for the reimbursement of costs. We need these details for
any queries you could have. The payout details help us to carry out the refund correctly.
If the money is refunded to an account that does not belong to you, please give a reason;
this is essential for our accounting.
<br><br>
4. The email address and IBAN are automatically checked for correct format. If necessary,
an error message will be displayed if these are incomplete or incorrect.

46
locale/en_US/h2.php Normal file
View file

@ -0,0 +1,46 @@
<b>
Please calculate the costs for each funding individually!
</b
><br />
1. Please first state in the field <b>Currency</b> the currency in which the reimbursement
should be proceeded. The selected currency applies to the entire reimbursement claim.
We kindly you to use Euro preferably.
<br />
2. Please state <b>one</b> expense, receipt, document as explanation per line (Pos.) with corresponding description and
attach a receipt as .pdf, .jpg, .png by clicking on the corresponding field.
Files uploaded incorrectly can be removed by clicking on the <b>x</b>.
The explanation should clarify the type of expenses,
e.g. transportation, service, catering. Please always state the date of the receipt.
<br />
3. In the case expenses in foreign currencies have occurred in your project, please attach
for each conversion an additional file where the conversion rate is indicated. These proofs for
conversion rates are accepted: Card billing (credit or debit card), Cash currency exchange receipt,
<a href="https://sdw.ecb.europa.eu/curConverter.do">Currency converter of the European Central Bank.</a>
If there is no exchange course in the currency converter of the European Central Bank and no other proof available,
please use <a href="https://www1.oanda.com/lang/de/currency/converter/">Oanda</a>.
<br />
4. In the case an advance payment had been granted by Wikimedia Deutschland for the project/event,
please state the amount in the “advance payment and other” field.
<br />
5. Please confirm the <b>completeness and correctness</b> of your data by clicking the box.
<br />
6. Finally, click on “Send reimbursement claim electronically directly to WMDE” for direct forwarding
the reimbursement claim to Wikimedia Deutschland or “Download reimbursement claim and submit later” if you still want
to make changes.
<br /><br />
Important instructions:<br />
The form will calculate the total amount on its own.
<br />
The settlement of <a href="https://de.wikipedia.org/wiki/Wikipedia:Wikimedia_Deutschland/FAQ_und_Hilfe_zur_Förderung#Verpflegung">“per diem”</a>
is done by a receipt, which you can generate by using the <a href="https://www.wikimedia.de/extern/verpflegungsmehraufwand.html">form</a>.
Please enter it in a appropriate separate line (Pos.) as an expense.
<br />
A merged PDF of the reimbursement claim and the attachments will be generated by the software.
<br />
Only if you uploaded a receipt/document for each item, you can send the reimbursement claim
directly to Wikimedia Deutschland (WMDE). Otherwise, you have the option of downloading the reimbursement claim,
edit it yourself later and send it to Wikimedia Deutschland.<br>
<br />
If there are any errors or questions, feel free to contact <a href="mailto:community@wikimedia.de">community@wikimedia.de</a>.

View file

@ -1,46 +1,128 @@
body {
margin: 1em;
max-width: 100em;
margin: auto;
padding: 1em;
border: 0px solid red;
max-width: 90em;
min-width: 80em;
}
#container {
display: grid;
grid-template-columns: auto;
}
.main-sidebar {
@include make-sidebar(440px);
/* margin-right: 61px;*/
width:20em;
padding-right:2em;
a.languageSelect {
#color: black;
#text-decoration: none;
font-size: 1.7vw;
}
@include for-mobile {
margin-right: 0;
a.languageSelect:hover {
color: red;
}
@media only screen and (max-width: 767px) {
body {
min-width: 2em;
padding: 0.5em;
}
#container {
align-items: center;
width: 100vw;
display: grid;
grid-template-columns: auto auto;
}
a.languageSelect {
font-size: 7vw;
}
}
.main-sidebar-secondary {
@include make-sidebar(240px);
margin-left: 16px;
@include for-mobile {
@media only screen and (max-width: 767px) {
fieldset {
padding-left: 0.5em;
padding-right: 0.5em;
}
}
.tab_input {
display: inline;
}
@media only screen and (max-width: 767px) {
.tab_input {
width: 50%;
}
}
@media only screen and (max-width: 767px) {
h1 {
font-size: 120%;
}
}
.is-col {
padding: 0;
border: 0px solid blue;
margin-bottom: 1.1em;
}
.main-sidebar {
flex: 0 0 10em;
max-width: 10em;
padding-right: 2em;
}
@media only screen and (max-width: 767px) {
.main-sidebar {
flex: 0;
max-width: 100%;
}
}
@media only screen and (max-width: 767px) {
.main-sidebar {
margin: auto;
text-align: center;
}
}
.main-sidebar-secondary {
flex: 0 0 240px;
max-width: 240px;
margin-left: 16px;
}
@media only screen and (max-width: 767px) {
.main-sidebar-secondary {
flex: 0;
max-width: 100%;
}
}
@media only screen and (max-width: 767px) {
.main-sidebar-secondary {
margin-left: 0;
}
}
.main-content {
/* @include make-content;*/
/* width: 100em;*/
/* max-width:170em;*/
flex: 1;
min-width: 0;
width: 100%;
}
.wmdelogo {
min-width: 5em;
}
.button.is-green {
/* // $back-color, $text-color
/* // $back-color, $text-color
@include make-button(#00ff00, #fff);*/
background-color:green;
}
.button.is-orange {
/* // $back-color, $text-color
@include make-button(#ffc000, #fff);*/
background-color:orange;
background-color: green;
margin-top: 5px;
}
.button.is-orange {
/* // $back-color, $text-color
@include make-button(#ffc000, #fff);*/
background-color: orange;
margin-top: 5px;
}
/*
#de:checked~header :lang(en) { display: none; }
@ -50,17 +132,32 @@ body {
#de:checked~main :lang(en) { display: none; }
#en:checked~main :lang(de) { display: none; }
*/
:lang(en) {
display: none;
}
:lang(en) {display: none;}
#bankdetails legend, #bankdetails input[type=radio], #bankdetails input[type=radio] + label, #bankdetails label.radio {
display: inline;
}
#bankdetails #eu:checked ~ .nonEU:not(.EU), #bankdetails #eu:checked ~ .paypal {
display: none;
}
#bankdetails #noneu:checked ~ .EU:not(.nonEU), #bankdetails #noneu:checked ~ .paypal {
display: none;
}
#bankdetails #paypal:checked ~ .EU, #bankdetails #paypal:checked ~ .nonEU {
display: none;
}
#bankdetails #bar:checked ~ .EU, #bankdetails #bar:checked ~ .nonEU, #bankdetails #bar:checked ~ .paypal {
display: none;
}
#bankdetails legend, #bankdetails input[type="radio"], #bankdetails input[type="radio"] + label, #bankdetails label.radio { display: inline; }
#bankdetails #eu:checked ~ .nonEU:not(.EU), #bankdetails #eu:checked ~ .paypal { display: none; }
#bankdetails #noneu:checked ~ .EU:not(.nonEU), #bankdetails #noneu:checked ~ .paypal { display: none; }
#bankdetails #paypal:checked ~ .EU, #bankdetails #paypal:checked ~ .nonEU { display: none; }
#bankdetails #bar:checked ~ .EU, #bankdetails #bar:checked ~ .nonEU, #bankdetails #bar:checked ~ .paypal { display: none; }
.radiobutton {
display: none !important;
}
/*# sourceMappingURL=master.css.map */

109
master.scss Normal file
View file

@ -0,0 +1,109 @@
@import 'scss/vars';
@import 'scss/mixins';
body {
margin: auto;
padding:1em;
border:0px solid red;
max-width:90em;
min-width:80em;
@include for-mobile {
min-width: 2em;
padding:0.5em;
}
}
fieldset {
@include for-mobile {
padding-left:0.5em;
padding-right:0.5em;
}
}
.tab_input {
display:inline;
@include for-mobile {
width:50%;
}
}
h1 {
@include for-mobile {
font-size:120%;
}
}
.is-col {
padding:0;
border:0px solid blue;
margin-bottom:1.1em;
}
.main-sidebar {
@include make-sidebar(10em);
padding-right:2em;
@include for-mobile {
margin:auto;
text-align:center;
}
}
.main-sidebar-secondary {
@include make-sidebar(240px);
margin-left: 16px;
@include for-mobile {
margin-left: 0;
}
}
.main-content {
@include make-content;
width: 100%;
}
.wmdelogo {
min-width:5em;
}
.button.is-green {
/* // $back-color, $text-color
@include make-button(#00ff00, #fff);*/
background-color:green;
margin-top:5px;
}
.button.is-orange {
/* // $back-color, $text-color
@include make-button(#ffc000, #fff);*/
background-color:orange;
margin-top:5px;
}
/*
#de:checked~header :lang(en) { display: none; }
#en:checked~header :lang(de) { display: none; }
#de:checked~div :lang(en) { display: none; }
#en:checked~div :lang(de) { display: none; }
#de:checked~main :lang(en) { display: none; }
#en:checked~main :lang(de) { display: none; }
*/
:lang(en) {display: none;}
#bankdetails legend, #bankdetails input[type="radio"], #bankdetails input[type="radio"] + label, #bankdetails label.radio { display: inline; }
#bankdetails #eu:checked ~ .nonEU:not(.EU), #bankdetails #eu:checked ~ .paypal { display: none; }
#bankdetails #noneu:checked ~ .EU:not(.nonEU), #bankdetails #noneu:checked ~ .paypal { display: none; }
#bankdetails #paypal:checked ~ .EU, #bankdetails #paypal:checked ~ .nonEU { display: none; }
#bankdetails #bar:checked ~ .EU, #bankdetails #bar:checked ~ .nonEU, #bankdetails #bar:checked ~ .paypal { display: none; }
.radiobutton {
display: none !important;
}

166
messages.po Normal file
View file

@ -0,0 +1,166 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-07 20:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ka.php:48
msgid "Antrag auf Kostenerstattung"
msgstr ""
#: ka.php:51
msgid ""
"Du möchtest dir Kosten erstatten lassen, welche im Rahmen deines Projektes "
"entstanden sind?"
msgstr ""
#: ka.php:52
msgid ""
"Bitte fülle dieses Formular aus. Pflichtfelder sind mit einem * "
"gekennzeichnet."
msgstr ""
#: ka.php:60
msgid "1. Erfasse deine Stammdaten"
msgstr ""
#: ka.php:65
msgid "Projekt/Zweck der Reise*"
msgstr ""
#: ka.php:72
msgid "Dein Realname (Vorname Nachname)*"
msgstr ""
#: ka.php:77
msgid "Deine Ansprechperson bei Wikimedia"
msgstr ""
#: ka.php:87
msgid "Deine Telefonnummer"
msgstr ""
#: ka.php:98
msgid "Deine E-Mail-Adresse*"
msgstr ""
#: ka.php:109
msgid "Banküberweisung"
msgstr ""
#: ka.php:110
msgid "Banküberweisung (Non-EU)"
msgstr ""
#: ka.php:118 ka.php:151
msgid "Kontoinhabende Person"
msgstr ""
#: ka.php:127
msgid "IBAN*"
msgstr ""
#: ka.php:132
msgid "BIC (wenn ausländische Bank)"
msgstr ""
#: ka.php:139
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank, Grund für abweichende "
"Kontoinhbende Person"
msgstr ""
#: ka.php:160
msgid "Kontonummer*"
msgstr ""
#: ka.php:165
msgid "BIC/SWIFT*"
msgstr ""
#: ka.php:173
msgid "Adresse der Bank (Stra&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr ""
#: ka.php:176
msgid "Deine Anschrift (Srta&szlig;e und Hausnummer/Postleitzahl/Land)"
msgstr ""
#: ka.php:185
msgid ""
"Weitere Anmerkungen z.B. intermediäre Bank,Grund für abweichende "
"kontoinhabende Person"
msgstr ""
#: ka.php:224
msgid "2. Erfasse deine Ausgaben"
msgstr ""
#: ka.php:226
msgid "Währung:"
msgstr ""
#: ka.php:240
msgid "Pos."
msgstr ""
#: ka.php:241
msgid "Datum"
msgstr ""
#: ka.php:242
msgid "Beschreibung"
msgstr ""
#: ka.php:243
msgid "Betrag"
msgstr ""
#: ka.php:244
msgid "Währung"
msgstr ""
#: ka.php:245
msgid "Belege"
msgstr ""
#: ka.php:246
msgid "L&ouml;schen"
msgstr ""
#: ka.php:254
msgid "Ausgabe hinzuf&uuml;gen"
msgstr ""
#: ka.php:260
msgid "3. Vorschuss und Sonstiges"
msgstr ""
#: ka.php:263
msgid "Ich habe bereits einen Vorschuss erhalten in H&ouml;he von:"
msgstr ""
#: ka.php:273
msgid "Hiermit bestätige ich die Vollständig- und Richtigkeit meiner Angaben:"
msgstr ""
#: ka.php:281
msgid "Antrag elektronisch direkt an WMDE schicken"
msgstr ""
#: ka.php:284
msgid "Antrag herunterladen und später einreichen"
msgstr ""

10
mkm.sh Normal file
View file

@ -0,0 +1,10 @@
#!/bin/sh
touch messages.po
xgettext --add-comments --from-code=utf-8 ka.php
msgmerge locale/en_US/LC_MESSAGES/messages.po messages.po > new.po
cp locale/en_US/LC_MESSAGES/messages.po locale/en_US/LC_MESSAGES/messages.po.bak
mv new.po locale/en_US/LC_MESSAGES/messages.po
rm locale/en_US/LC_MESSAGES/messages.mo
msgfmt locale/en_US/LC_MESSAGES/messages.po -o locale/en_US/LC_MESSAGES/messages.mo

View file

@ -1,9 +1,11 @@
@use "sass:math";
// =FUNCTIONS
// ---------------------------------------------------------------------------
@function strip-unit($number) {
@if type-of($number) == 'number' and not unitless($number)
{
@return $number / ($number * 0 + 1);
@return math.div($number , ($number * 0 + 1));
}
@return $number;
@ -129,7 +131,7 @@ $color-button: #0c3dd7 !default;
// ---------------------------------------------------------------------------
// Font Metrics
$letter-height: 12/16;
$letter-height: math.div(12,16);
$crop-top: 0.49em;
$crop-bottom: 0.49em;
@ -157,9 +159,9 @@ $border-radius: 4px !default;
$border: 1px solid rgba($color-black, .07) !default;
// Input/Buttons Height
$controls-height: ((40/(strip-unit($font-size-ui)*16)) * 1em) !default; // 40px in ems
$controls-height-small: ((32/(strip-unit($font-size-small)*16)) * 1em) !default; // 32px in ems
$controls-height-big: ((44/(strip-unit($font-size-big)*16)) * 1em) !default; // 44px in ems
$controls-height: ((math.div(40,(strip-unit($font-size-ui)*16))) * 1em) !default; // 40px in ems
$controls-height-small: ((math.div(32,(strip-unit($font-size-small)*16))) * 1em) !default; // 32px in ems
$controls-height-big: ((math.div(44,(strip-unit($font-size-big)*16))) * 1em) !default; // 44px in ems
// Overlay
$overlay-background-color: rgba($color-black, .18) !default;

View file

@ -1,11 +1,44 @@
<?php
ob_start();
session_start();
if ($_GET['lst']=='1'){
$file = "Antrag.pdf";
header('Content-Disposition: attachment; filename="'. $file . '"');
header('Content-Length: ' . strlen($_SESSION['lst']));
echo $_SESSION['lst'];
die;
}
?>
<html>
<head>
<title>Kostenerstattungsforumlar</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Kube CSS -->
<link rel="stylesheet" href="css/kube.min.css">
<link rel="stylesheet" href="addons/kube-addons.min.css" />
<link rel="stylesheet" href="master.css" />
</head>
<body>
<?php
error_log("SUBMIT\n");
require "config.php";
require "PHPMailer/PHPMailer.php";
require "PHPMailer/SMTP.php";
require "PHPMailer/Exception.php";
#$CONVERT_CMD = "/usr/bin/pdftk";
require_once('TCPDF/tcpdf.php');
@ -15,7 +48,7 @@ class kaformPDF extends TCPDF {
public function Header() {
}
// // Logo
// Logo
// $image_file = K_PATH_IMAGES.'logo_example.jpg';
// $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
// // Set font
@ -23,15 +56,15 @@ class kaformPDF extends TCPDF {
// // Title
// $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
// }
//
// // Page footer
// Page footer
public function Footer() {
}
// // Position at 15 mm from bottom
// Position at 15 mm from bottom
// $this->SetY(-15);
// // Set font
// Set font
// $this->SetFont('helvetica', 'I', 8);
// // Page number
// Page number
// $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
// }
// }
@ -55,9 +88,6 @@ function mkFrontPDF(){
$bankaddress = str_replace("\n","<BR>",$_POST['n_bankaddress']);
$address = str_replace("\n","<BR>",$_POST['n_address']);
$account_owner = $_POST['owner'];
if (!$account_owner) $account_owner = $_POST['realname'];
# $aval = $_POST['advance'];
# $advance = floatval(str_replace(",",".",$aval));
@ -66,6 +96,9 @@ function mkFrontPDF(){
switch ($_POST['banktype']){
case "bank-eu":
$account_owner = $_POST['sepa_owner'];
if (!$account_owner) $account_owner = $_POST['realname'];
$aw = "EU-Bank&uuml;berweisung";
$aw_details = "
Kontoinhaber: $account_owner<br>
@ -75,6 +108,8 @@ function mkFrontPDF(){
";
break;
case "bank-noneu":
$account_owner = $_POST['non_sepa_owner'];
if (!$account_owner) $account_owner = $_POST['realname'];
$aw = "Non-EU-Bank&uuml;berweisung";
$aw_details = "
Kontoinhaber: $account_owner<br>
@ -167,7 +202,7 @@ function mkFrontPDF(){
// Set some content to print
$html =
<<<EOD
<h1>Kostenerstattungsantrag &uuml;ber $sum EUR</h1>
<h1>Kostenerstattungsantrag &uuml;ber $sum $_POST[currency]</h1>
<p><b>Projekt: $_POST[project]</b></p>
<hr>
<p>
@ -192,12 +227,6 @@ function mkFrontPDF(){
EOD;
#var_dump($thtml);
#die;
// <p>WMDE Ansprechpartner: $_POST[wmdecontact]</p>
// Telefon: $_POST[phone]
// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
@ -228,7 +257,7 @@ function mkSnippedPdf($key){
$pdf->AddPage('L');
$pos = array_search($key,array_keys($_POST['description']))+1;
$pos = array_search($key,array_keys($_POST['desc']))+1;
@ -237,7 +266,7 @@ function mkSnippedPdf($key){
# $mydesk = $_POST[desc][$key];
#
$amount = $_POST['amount'][$key];
$desc = $_POST['description'][$key];
$desc = $_POST['desc'][$key];
$am = floatval(str_replace(",",".",$amount));
$am = str_replace(".",",",sprintf("%.2f",$am));
@ -248,7 +277,7 @@ function mkSnippedPdf($key){
<h1>Position $pos</h1>
<p>$desc</p><br>
<p>$am EUR</p><br>
<p>$am $_POST[currency]</p><br>
EOD;
// Print text using writeHTMLCell()
@ -294,7 +323,6 @@ function calcSum(){
}
$sum -= get_adv();
return str_replace(".",",",sprintf("%0.2f",$sum));
// return sprintf("%.2f",$sum);
}
@ -315,10 +343,10 @@ function mkTable(){
$html .= "<td>$pos</td>";
$html .= "<td>".$_POST['date'][$key]."</td>";
$html .= "<td>".$_POST['description'][$key]."</td>";
$html .= "<td>".$_POST['desc'][$key]."</td>";
$am = floatval(str_replace(",",".",$val));
$am = str_replace(".",",",sprintf("%.2f",$am));
$html .= '<td align="right">'.$am." ".$_POST['currency'][$key]. "</td>";
$html .= '<td align="right">'.$am." ".$_POST['currency']. "</td>";
$html .="</tr>";
@ -336,7 +364,7 @@ function mkTable(){
$html .= "Bereits erhaltener Vorschuss:";
$html .= '</td>';
$html .= '<td align="right">';
$html .= sprintf("-%0.2f",$adv)." EUR";
$html .= sprintf("-%0.2f",$adv)." ".$_POST['currency'];
$html .= '</td>';
$html .= "</tr>";
@ -347,7 +375,7 @@ function mkTable(){
$html .= "<b>Summe:</b>";
$html .= '</td>';
$html .= '<td align="right">';
$html .= "<b>".calcSum()." EUR</b>";
$html .= "<b>".calcSum()." ".$_POST['currency']."</b>";
$html .= '</td>';
$html .= '</tr>';
@ -364,6 +392,9 @@ function mkTable(){
$pdfs = array();
error_log("Making Front PDF");
//
// Applicatoin starts here
//
$p = mkFrontPDF();
@ -373,19 +404,10 @@ $file = $p;
#header('Content-Length: ' . filesize($file));
#readfile($file);
#var_dump($p);
#die();
#echo "Making Fromt PDF<BR>";
#echo "Did Making Fromt PDF<BR>";
array_push($pdfs,$p);
//var_dump($pdfs);
foreach ($_POST['description'] as $key => $val) {
foreach ($_POST['desc'] as $key => $val) {
// echo "DREESK KEY VAL $key --> $val<br>";
$p = mkSnippedPDF($key);
array_push($pdfs,$p);
@ -400,18 +422,20 @@ foreach ($_POST['description'] as $key => $val) {
$resultnam = tempnam("/tmp","karesult");
$cmd = "$CONVERT_CMD";
$cmd = "$PDFTK_CMD";
foreach ($pdfs as $filename){
$cmd .= " $filename";
}
$cmd .= " cat output $resultnam.pdf";
error_log("EXEC CMD $cmd");
exec ($cmd);
#var_dump($_POST);
$file = "$resultnam.pdf";
if ($_POST['sendmail']=='yes'){
$subj = "Kostenerstattungsantrag ueber".calcSum()." EUR";
$subj = "Kostenerstattungsantrag ueber".calcSum()." ".$_POST['currency'];
$mail = new PHPMailer\PHPMailer\PHPMailer();
@ -428,6 +452,9 @@ if ($_POST['sendmail']=='yes'){
$mail->Subject = $subj;
$mail->Body = "Kostenerstattungsantrag ...";
$mail->AddAddress($mailDest);
if ($mailDestCC) {
$mail->AddCC($mailDestCC);
}
$mail->AddAttachment( $file , 'antrag.pdf' );
$mail->Host = $mailHost; // Specify main and backup server
@ -439,17 +466,44 @@ if ($_POST['sendmail']=='yes'){
$rc = $mail->send();
if (!$rc) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
die;
}
echo "Dein Antrag wurde versendet.<BR>";
echo '<a href="ka.php">
?>
<!-- <div class="is-col">
<button type="button" onclick="downloadDocument(false);"
class="button is-orange"><?=_("Kopie des Antrags herunterladen")?></button>
</div> -->
<?php
echo '<a href="./submit.php?lst=1" target="_blank">Kopie des Antrags herunterladen</a>';
echo "<br>";
echo '<a href="./">
Weiteren Antrag auf Kostenerstattung stellen</a><BR>';
$_SESSION['lst']=file_get_contents("$resultnam.pdf");
session_write_close();
die;
}
$file = "$resultnam.pdf";
header('Content-Disposition: attachment; filename="'. basename($file) . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
?>
<script src="js/kube.min.js"></script>
<script src="kaform.js"></script>
<script src="addons/upload/kube.upload.min.js"></script>
<script src="addons/kube-addons.min.js"></script>
<script src="iban.js/iban.js"></script>
</body>
</html>

View file

@ -1,26 +1,50 @@
<?php
session_start();
#error_log("Here is upload.php");
include "config.php";
function xvar_dump ($x) {
ob_start();
var_dump($x);
return ob_get_clean();
}
$fff = xvar_dump($_FILES);
file_put_contents("/tmp/log.txt", "uploader\n", FILE_APPEND | LOCK_EX);
file_put_contents("/tmp/log.txt", "$fff\n", FILE_APPEND | LOCK_EX);
if (!count($_FILES)){
file_put_contents("/tmp/log.txt", "ERRORZWEIK\n", FILE_APPEND | LOCK_EX);
$jo = array(
"type" => "error"
);
$j = json_encode ($jo);
echo $j;
$x = xvar_dump($j);
file_put_contents("/tmp/log.txt", "$j\n", FILE_APPEND | LOCK_EX);
file_put_contents("/tmp/log.txt", "$x\n", FILE_APPEND | LOCK_EX);
return;
}
$jo = array();
foreach ($_FILES as $key=>$files){
file_put_contents("/tmp/log.txt", "MIME: tester\n", FILE_APPEND | LOCK_EX);
for ($i=0; $i < count($files['name']); $i++){
$tmpname = $files['tmp_name'][$i];
$ft = mime_content_type($tmpname);
if ($ft != "application/pdf"){
$jo = array(
"type" => "error"
);
} else {
file_put_contents("/tmp/log.txt", "MIME: $ft\n", FILE_APPEND | LOCK_EX);
if ($ft == "application/pdf"){
$jo ["file-$key-$i"] = array(
"url" => "url.txt",
@ -28,12 +52,55 @@ foreach ($_FILES as $key=>$files){
"id" => $tmpname,
"size" => sprintf("%0.1fK",$files['size'][$i]/1024.0)
);
}
$_SESSION['files'][$tmpname]['content']=
file_get_contents($tmpname);
file_put_contents("/tmp/log.txt", "file-$key-$i\n", FILE_APPEND | LOCK_EX);
file_put_contents("/tmp/log.txt", $files['name'][$i]."\n", FILE_APPEND | LOCK_EX);
$_SESSION['files'][$tmpname]['content']=file_get_contents($tmpname);
$_SESSION['files'][$tmpname]['row']=$_GET['row'];
}else if (
$ft == "image/jpeg" ||
$ft == "image/png" ||
$ft == "image/tiff" ||
$ft == "image/bmp" ||
$ft == "image/gif"
){
$jo ["file-$key-$i"] = array(
"url" => "url.txt",
"name" => $files['name'][$i],
"id" => $tmpname,
"size" => sprintf("%0.1fK",$files['size'][$i]/1024.0)
);
file_put_contents("/tmp/log.txt", "BILD detected\n", FILE_APPEND | LOCK_EX);
file_put_contents("/tmp/log.txt", "file-$key-$i\n", FILE_APPEND | LOCK_EX);
file_put_contents("/tmp/log.txt", $files['name'][$i], FILE_APPEND | LOCK_EX);
$tmpfname = tempnam("/tmp", "FOO");
$cmd = "$CONVERT_CMD $tmpname PDF:$tmpfname";
exec ($cmd);
file_put_contents("/tmp/log.txt", "\n$cmd\n");
$_SESSION['files'][$tmpname]['content']=file_get_contents($tmpfname);
$_SESSION['files'][$tmpname]['row']=$_GET['row'];
unlink ($tmpfname);
}else {
file_put_contents("/tmp/log.txt", "ERRORZWEIK\n", FILE_APPEND | LOCK_EX);
$jo = array(
"type" => "error"
);
$j = json_encode ($jo);
echo $j;
$x = xvar_dump($j);
file_put_contents("/tmp/log.txt", "$j\n", FILE_APPEND | LOCK_EX);
file_put_contents("/tmp/log.txt", "$x\n", FILE_APPEND | LOCK_EX);
return;
}
}
}
@ -48,6 +115,9 @@ foreach ($_SESSION['files'] as $key => $val) {
$j = json_encode ($jo);
echo $j;
file_put_contents("/tmp/log.txt", $j, FILE_APPEND | LOCK_EX);
#error_log("\n\n ----- files ----- \n\n$files\n\n\n");
#$xp = xvar_dump($_FILES);
#error_log("\n\n ----- FILES ----- \n\n$$xp\n\n\n");