Compare commits

..

46 commits

Author SHA1 Message Date
Sebijk
dfb82c6ef1 fix undefined array key strike 2023-11-03 08:29:05 +01:00
Sebijk
5c17ac91b7 set version to 7.4.1-RC1 2023-10-14 14:51:21 +02:00
Sebijk
281fc00552 fix undefined 2023-10-14 14:43:58 +02:00
Sebijk
d1aa868c24 search filter absendername 2023-10-14 14:43:34 +02:00
Sebijk
e3436e999a create a docker template for development
thanks to mbuchalik for this idea
2023-10-14 14:24:25 +02:00
Sebijk
8808752b30 switch to json instead serialize + base64 2023-10-14 14:19:41 +02:00
Sebijk
8e3509d8b8 require init 2023-10-13 21:43:39 +02:00
Sebijk
da39b74ee8 php 8 fix from mbuchalik fork 2023-10-13 21:42:59 +02:00
Sebijk
f3b00829ed fix static call in fax plugin and update fpdi to 2.5 2023-10-13 21:40:43 +02:00
Sebijk
3bde398b52 require init
if init.inc.php not exists, it will stop script, include just continue.
2023-10-13 21:26:09 +02:00
Sebijk
15e17a6075 Port some changes from MBuchalik fork 2023-10-13 21:21:03 +02:00
Sebijk
08800a2bff Update Smarty to 3.1.48 2023-10-13 16:22:00 +02:00
Sebijk
6b5b84a920 fix undefined extlink 2023-09-23 23:09:26 +02:00
Sebijk
4206e26ccb update fpdf to 1.86 2023-08-06 13:22:54 +02:00
Sebijk
e86c54a7cb add isset 2023-08-06 13:09:23 +02:00
Sebijk
b8063773f9 fix undefined index 2023-08-05 09:45:44 +02:00
Sebijk
ddd402cf2d update ckeditor 2023-07-19 19:11:23 +02:00
Sebijk
fd7db4aee4 process # in deref.php 2023-06-12 20:59:59 +02:00
Sebijk
26914fa012 fix undefined variable 2023-06-12 20:38:12 +02:00
Sebijk
5baea95fcd fix undefined variable 2023-06-07 04:05:02 +02:00
Sebijk
0c18bca69f update FPDI to 2.3.7 2023-06-06 20:39:15 +02:00
Sebijk
0f4ec3d32d update CKEditor to 4.21.0 2023-06-06 20:20:35 +02:00
Sebijk
5b0c842c48 remove obsolete code with safe_mode 2023-06-06 18:51:43 +02:00
Sebijk
76bc97d627 fix syntax error 2023-06-06 17:41:48 +02:00
Sebijk
e2a4d687e8 Security: Prevent leak of POP3 passwords in html code. 2023-06-06 17:37:52 +02:00
Sebijk
76a58c77f5 fix undefined variable 2023-06-06 17:05:01 +02:00
Sebijk
da37928a60 fix undefined variable 2023-06-06 17:03:36 +02:00
Sebijk
ebc0f974dc fix undefined variable 2023-06-06 16:55:13 +02:00
Sebijk
a827bbee18 fix undefined error 2023-06-06 16:50:02 +02:00
Sebijk
8c62bc536d fix undefined var 2023-03-22 19:23:14 +01:00
Sebijk
7458dc7fae fix undefined array key 2023-02-11 23:50:17 +01:00
Sebijk
0f335a7809 template if fix 2023-02-03 22:33:39 +01:00
Sebijk
775fea6d73 set version to 7.4.1-Beta4 2023-02-02 20:59:14 +01:00
Sebijk
e599013582 add FileHandlerMobile
This allow to use plugins in mobile interface
2023-02-02 19:53:15 +01:00
Sebijk
28c56c50c9 make _sendNotification static 2023-02-02 00:04:43 +01:00
Sebijk
825591f52c add dnsbl and reglock check for non logged in users 2023-02-01 21:00:34 +01:00
Sebijk
3a69a69a50 responsive widgets + template fixes 2023-02-01 20:22:18 +01:00
Sebijk
be0a2c84bf sabredav replace utf8_encode 2023-02-01 20:21:21 +01:00
Sebijk
db1d099341 remove obsolete koobi7 and jfchat plugin 2023-02-01 20:15:05 +01:00
Sebijk
c8f5e7b2cf fix undefined key in email compose 2023-02-01 00:48:30 +01:00
Sebijk
aa6f631316 isset captchainfo 2023-02-01 00:18:25 +01:00
Sebijk
72094d0d40 add more isset 2023-02-01 00:03:38 +01:00
Sebijk
bbf69c444d fix again a lot of undefined index 2023-01-31 22:43:33 +01:00
Sebijk
c4bb0e2bc2 make _dateFor static 2023-01-22 13:45:47 +01:00
Sebijk
8a675941b8 make _getOccurencesInTimeframe and _dateFor static 2023-01-22 13:42:55 +01:00
Sebijk
e7f7e499a7 fix call in static function: use self function 2023-01-22 13:23:59 +01:00
546 changed files with 42535 additions and 11078 deletions

View file

@ -17,7 +17,8 @@ A big thanks goes to b1gMail founder Patrick Schlangen. He released b1gMail as f
## Getting started
It is recommended to install the b1gMail developer copy on a local web server,
e.g. standard Apache/PHP/MySQL on Linux or Wamp on Windows. Even better results
on Windows can be achieved with a WSL setup.
on Windows can be achieved with a WSL setup. If you use Docker, you can also
use our docker template in `docker-dev`.
In order to install a development environment, proceed as follows:
1. Clone the repository

2
dev-docker/.env Normal file
View file

@ -0,0 +1,2 @@
# Docker by default uses the folder name to isolate different projects. This might however be a problem because we call our folder "dev", which might also be how other projects call their folders. To avoid any collisions, we use an idea from https://stackoverflow.com/questions/50947938/docker-compose-orphan-containers-warning
COMPOSE_PROJECT_NAME=b1gmail-dev

15
dev-docker/Dockerfile Normal file
View file

@ -0,0 +1,15 @@
FROM php:8.2-apache
# From the official documentation on https://hub.docker.com/_/php
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
# See https://github.com/docker-library/php/issues/391
RUN docker-php-ext-install mysqli
RUN docker-php-ext-install intl

29
dev-docker/README.md Normal file
View file

@ -0,0 +1,29 @@
**THIS SETUP IS ONLY MEANT FOR DEVELOPMENT PURPOSES!**
> Make sure you have Docker installed on your system.
In order to start a development server, simply run `docker compose up`. This will start an apache server with php (on `localhost:5000`), a mysql database, and phpmyadmin (on `localhost:3100`).
The credentials for the database that you will later also need when installing b1gmail:
- Host: `db` (Yes, you don't need to use any IP address or similar. Just `db` is sufficient.)
- Database name: `b1gmail`
- Username: `user`
- Password: `password`
In order to log in to phpmyadmin, use the following credentials:
- Username: `root`
- Password: `root`
Important when recreating the containers: We don't only store data in the database, but also in `/src/temp/` and `/src/data/`. You might need to delete files and folders in these directories. You can delete everything from `/src/data/` and `/src/temp/` except for the following files:
- `/src/data/.htaccess`
- `/src/data/index.html`
- `/src/temp/.htaccess`
- `/src/temp/index.html`
- `/src/temp/cache/dummy`
- `/src/temp/session/dummy`
- `/src/serverlib/config.inc.php`
A script for automation is included. If you want to use a "hacky" approach for now: Simply delete these `/src/data/` and `/src/temp/` directories and then use git to revert the changes.

View file

@ -0,0 +1,32 @@
version: '3.9'
services:
php:
build: .
networks:
- default
ports:
- '5000:80'
volumes:
- ../src:/var/www/html
depends_on:
- db
db:
image: mariadb
networks:
- default
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: b1gmail
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- '3306:3306'
phpmyadmin:
image: phpmyadmin/phpmyadmin:5
ports:
- '3100:80'
depends_on:
- db

View file

@ -0,0 +1,31 @@
#!/bin/bash
rm -Rf ../src/data
mkdir ../src/data
touch ../src/data/.htaccess
touch ../src/data/index.html
rm -Rf ../src/temp
mkdir ../src/temp
mkdir ../src/temp/cache
mkdir ../src/temp/session
touch ../src/temp/.htaccess
touch ../src/temp/index.html
touch ../src/temp/cache/dummy
touch ../src/temp/session/dummy
tee ../src/temp/.htaccess <<EOF
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Deny from all
</IfModule>
EOF
tee ../src/data/.htaccess <<EOF
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Deny from all
</IfModule>
EOF

View file

@ -58,7 +58,7 @@ if($_REQUEST['action'] == 'db')
{
// read default structure
include('../serverlib/database.struct.php');
$databaseStructure = unserialize(base64_decode($databaseStructure));
$databaseStructure = json_decode($databaseStructure, JSON_OBJECT_AS_ARRAY);
// get tables
$defaultTables = array();
@ -184,7 +184,7 @@ if($_REQUEST['action'] == 'db')
{
// read default structure
include('../serverlib/database.struct.php');
$databaseStructure = unserialize(base64_decode($databaseStructure));
$databaseStructure = json_decode($databaseStructure, JSON_OBJECT_AS_ARRAY);
$executedQueries = SyncDBStruct($databaseStructure);
// assign

View file

@ -46,7 +46,7 @@
{elseif $fieldInfo.type==2}
<input type="checkbox" name="prefs[{$groupName}][{$fieldKey}]" value="1"{if $fieldInfo.value} checked="checked"{/if} />
{elseif $fieldInfo.type==1}
<input type="text" style="width:85%;" name="prefs[{$groupName}][{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
<input type="text" style="width:85%;" name="prefs[{$groupName}][{$fieldKey}]" value="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
{/if}
</td>
</tr>

View file

@ -7,15 +7,15 @@
<tr>
<td width="40" valign="top" rowspan="6"><img src="{$tpldir}images/ico_users.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="220">{lng p="username"}:</td>
<td class="td2"><input type="text" size="28" id="username" name="username" value="{text value=$admin.username}" /></td>
<td class="td2"><input type="text" size="28" id="username" name="username" value="{if isset($admin.username)}{text value=$admin.username}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="firstname"}:</td>
<td class="td2"><input type="text" size="36" id="firstname" name="firstname" value="{text value=$admin.firstname allowEmpty=true}" /></td>
<td class="td2"><input type="text" size="36" id="firstname" name="firstname" value="{if isset($admin.firstname)}{text value=$admin.firstname allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="lastname"}:</td>
<td class="td2"><input type="text" size="36" id="lastname" name="lastname" value="{text value=$admin.lastname allowEmpty=true}" /></td>
<td class="td2"><input type="text" size="36" id="lastname" name="lastname" value="{if isset($admin.lastname)}{text value=$admin.lastname allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="type"}:</td>
@ -36,7 +36,7 @@
<td class="td1" width="220">{lng p="areas"}:</td>
<td class="td2">
{foreach from=$permsTable item=permTitle key=permName}
<input type="checkbox" name="perms[{$permName}]" value="1" id="perm_{$permName}"{if $admin.perms.$permName} checked="checked"{/if} />
<input type="checkbox" name="perms[{$permName}]" value="1" id="perm_{$permName}"{if isset($admin.perms.$permName) && $admin.perms.$permName} checked="checked"{/if} />
<label for="perm_{$permName}" style="font-weight:bold;">{$permTitle}</label><br />
{/foreach}
</td>
@ -45,7 +45,7 @@
<td class="td1">{lng p="plugins"}:</td>
<td class="td2">
{foreach from=$pluginList item=pluginTitle key=pluginName}
<input type="checkbox" name="perms[plugins][{$pluginName}]" value="1" id="plugin_{$pluginName}"{if $admin.perms.plugins.$pluginName} checked="checked"{/if} />
<input type="checkbox" name="perms[plugins][{$pluginName}]" value="1" id="plugin_{$pluginName}"{if isset($admin.perms.plugins.$pluginName) && $admin.perms.plugins.$pluginName} checked="checked"{/if} />
<label for="plugin_{$pluginName}" style="font-weight:bold;">{text value=$pluginTitle}</label><br />
{/foreach}
</td>

View file

@ -8,7 +8,7 @@
<table width="100%">
<tr>
<td class="td1" width="160">{lng p="title"}:</td>
<td class="td2"><input type="text" name="titel" value="{text value=$group.titel allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="titel" value="{if isset($group.titel)}{text value=$group.titel allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="htmlview"}?</td>
@ -235,11 +235,11 @@
</tr>
<tr>
<td class="td1" width="160">{lng p="smsfrom"}:</td>
<td class="td2"><input type="text" name="sms_from" value="{text value=$group.sms_from allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="sms_from" value="{if isset($group.sms_from)}{text value=$group.sms_from allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="smssig"}:</td>
<td class="td2"><input type="text" name="sms_sig" value="{text value=$group.sms_sig allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="sms_sig" value="{if isset($group.sms_sig)}{text value=$group.sms_sig allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="mailsig"}:</td>
@ -266,7 +266,7 @@
{elseif $fieldInfo.type==2}
<input type="checkbox" name="{$fieldKey}" value="1"{if $fieldInfo.value} checked="checked"{/if} />
{elseif $fieldInfo.type==1}
<input type="text" style="width:85%;" name="{$fieldKey}" value="{text value=$fieldInfo.value allowEmpty=true}" />
<input type="text" style="width:85%;" name="{$fieldKey}" value="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
{/if}
</tr>
{/foreach}

View file

@ -46,26 +46,26 @@
<tr>
<td class="td1">{lng p="priority"}:</td>
<td class="td2">
<input type="checkbox"{if $prio[8]} checked="checked"{/if} name="prio[8]" id="prio8" />
<input type="checkbox"{if isset($prio[8])} checked="checked"{/if} name="prio[8]" id="prio8" />
<label for="prio8"><img src="{$tpldir}images/debug.png" border="0" alt="" width="16" height="16" /></label> &nbsp;
<input type="checkbox"{if $prio[2]} checked="checked"{/if} name="prio[2]" id="prio2" />
<input type="checkbox"{if isset($prio[2])} checked="checked"{/if} name="prio[2]" id="prio2" />
<label for="prio2"><img src="{$tpldir}images/info.png" border="0" alt="" width="16" height="16" /></label> &nbsp;
<input type="checkbox"{if $prio[1]} checked="checked"{/if} name="prio[1]" id="prio1" />
<input type="checkbox"{if isset($prio[1])} checked="checked"{/if} name="prio[1]" id="prio1" />
<label for="prio1"><img src="{$tpldir}images/warning.png" border="0" alt="" width="16" height="16" /></label> &nbsp;
<input type="checkbox"{if $prio[4]} checked="checked"{/if} name="prio[4]" id="prio4" />
<input type="checkbox"{if isset($prio[4])} checked="checked"{/if} name="prio[4]" id="prio4" />
<label for="prio4"><img src="{$tpldir}images/error.png" border="0" alt="" width="16" height="16" /></label> &nbsp;
<input type="checkbox"{if $prio[16]} checked="checked"{/if} name="prio[16]" id="prio16" />
<input type="checkbox"{if isset($prio[16])} checked="checked"{/if} name="prio[16]" id="prio16" />
<label for="prio16"><img src="{$tpldir}images/plugin.png" border="0" alt="" width="16" height="16" /></label>
</td>
</tr>
<tr>
<td class="td1">{lng p="search"}:</td>
<td class="td2">
<input type="text" name="q" value="{text value=$q allowEmpty=true}" size="36" style="width:85%;" />
<input type="text" name="q" value="{if isset($q)}{text value=$q allowEmpty=true}{/if}" size="36" style="width:85%;" />
</td>
</tr>
</table>

View file

@ -8,8 +8,8 @@
<input type="hidden" name="queryAction" value="show" />
{if $smarty.post.queryTypeLogin}<input type="hidden" name="queryTypeLogin" value="on" />{/if}
{if $smarty.post.queryTypeGroups}<input type="hidden" name="queryTypeGroups" value="on" />{/if}
{if $smarty.post.loginDays}<input type="hidden" name="loginDays" value="{text value=$smarty.post.loginDays allowEmpty=true}" />{/if}
{foreach from=$smarty.post.groups item=item key=key}<input type="hidden" name="groups[{$key}]" value="{text value=$item allowEmpty=true}" />{/foreach}
{if $smarty.post.loginDays}<input type="hidden" name="loginDays" value="{if isset($smarty.post.loginDays)}{text value=$smarty.post.loginDays allowEmpty=true}{/if}" />{/if}
{foreach from=$smarty.post.groups item=item key=key}<input type="hidden" name="groups[{$key}]" value="{if isset($item)}{text value=$item allowEmpty=true}{/if}" />{/foreach}
<fieldset>
<legend>{lng p="inactiveusers"}</legend>

View file

@ -1,7 +1,7 @@
<fieldset>
<legend>{$msgTitle}</legend>
{if $msgIcon}
{if !empty($msgIcon)}
<table>
<tr>
<td width="36" valign="top"><img src="{$tpldir}images/{$msgIcon}.png" border="0" alt="" width="32" height="32" /></td>
@ -12,7 +12,7 @@
{$msgText}
{/if}
{if $backLink}
{if !empty($backLink)}
<p align="right">
<input class="button" type="button" onclick="document.location.href='{$backLink}sid={$sid}';" value=" {lng p="back"} " />
</p>
@ -23,10 +23,8 @@
{/if}
</fieldset>
{if $reloadMenu}
{if isset($reloadMenu) && $reloadMenu}
<script>
<!--
parent.frames['menu'].location.href = 'main.php?action=menu&item=4&sid={$sid}';
//-->
</script>
{/if}
{/if}

View file

@ -6,7 +6,7 @@
<tr>
<td width="40" valign="top" rowspan="7"><img src="{$tpldir}images/newsletter.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="120">{lng p="title"}:</td>
<td class="td2"><input type="text" id="subject" name="title" value="{text value=$tpl.title allowEmpty=true}" size="42" /></td>
<td class="td2"><input type="text" id="subject" name="title" value="{if isset($tpl.title)}{text value=$tpl.title allowEmpty=true}{/if}" size="42" /></td>
</tr>
<tr>
<td class="td1" >{lng p="mode"}:</td>
@ -20,11 +20,11 @@
</tr>
<tr>
<td class="td1">{lng p="from"}:</td>
<td class="td2"><input type="text" id="from" name="from" value="{text value=$tpl.from allowEmpty=true}" size="42" /></td>
<td class="td2"><input type="text" id="from" name="from" value="{if isset($tpl.from)}{text value=$tpl.from allowEmpty=true}{/if}" size="42" /></td>
</tr>
<tr>
<td class="td1">{lng p="subject"}:</td>
<td class="td2"><input type="text" id="subject" name="subject" value="{text value=$tpl.subject allowEmpty=true}" size="42" /></td>
<td class="td2"><input type="text" id="subject" name="subject" value="{if isset($tpl.subject)}{text value=$tpl.subject allowEmpty=true}{/if}" size="42" /></td>
</tr>
<tr>
<td class="td1">{lng p="priority"}:</td>

View file

@ -67,7 +67,7 @@
</tr>
<tr>
<td class="td1">{lng p="from"}:</td>
<td class="td2"><input type="text" id="from" name="from" value="{text value=$from}" size="42" /></td>
<td class="td2"><input type="text" id="from" name="from" value="{if isset($from)}{text value=$from}{/if}" size="42" /></td>
</tr>
<tr>
<td class="td1">{lng p="subject"}:</td>

View file

@ -17,7 +17,7 @@
<td class="td1" width="120">{lng p="groups"}:</td>
<td class="td2">
{foreach from=$groups item=group key=groupID}
<input type="checkbox" name="group_{$groupID}" id="group_{$groupID}"{if !$smarty.get.toGroup||$smarty.get.toGroup==$groupID} checked="checked"{/if} onclick="determineNewsletterRecipients()" />
<input type="checkbox" name="group_{$groupID}" id="group_{$groupID}"{if !isset($smarty.get.toGroup) || !$smarty.get.toGroup || $smarty.get.toGroup==$groupID} checked="checked"{/if} onclick="determineNewsletterRecipients()" />
<label for="group_{$groupID}"><b>{text value=$group.title}</b></label><br />
{/foreach}
</td>
@ -75,7 +75,7 @@
</tr>
<tr>
<td class="td1">{lng p="from"}:</td>
<td class="td2"><input type="text" id="from" name="from" value="{text value=$from}" size="42" /></td>
<td class="td2"><input type="text" id="from" name="from" value="{if isset($from)}{text value=$from}{/if}" size="42" /></td>
</tr>
<tr>
<td class="td1">{lng p="subject"}:</td>
@ -93,14 +93,12 @@
<td colspan="2" style="border: 1px solid #DDDDDD;background-color:#FFFFFF;">
<textarea name="emailText" id="emailText" class="plainTextArea" style="width:100%;height:400px;"></textarea>
<script src="../clientlib/wysiwyg.js?{fileDateSig file="../../clientlib/wysiwyg.js"}"></script>
<script type="text/javascript" src="../clientlib/ckeditor/ckeditor.js?{fileDateSig file="../../clientlib/ckeditor/ckeditor.js"}"></script>
<script src="../clientlib/ckeditor/ckeditor.js?{fileDateSig file="../../clientlib/ckeditor/ckeditor.js"}"></script>
<script>
<!--
var editor = new htmlEditor('emailText');
editor.height = 400;
editor.init();
registerLoadAction('editor.start()');
//-->
</script>
</td>
</tr>
@ -136,8 +134,6 @@
</form>
<script>
<!--
var newsletterMode = 'export';
registerLoadAction('determineNewsletterRecipients()');
//-->
</script>
</script>

View file

@ -1,7 +1,7 @@
<fieldset>
<legend>{lng p="db"}</legend>
{if $execute}
{if isset($execute)}
<table class="list">
<tr>
<th>&nbsp;</th>

View file

@ -107,7 +107,7 @@
<ul>
{if $adminRow.type==0}<li><a href="plugins.php?sid={$sid}"><img src="./templates/images/plugin.png" />{lng p="plugins"}</a></li>{/if}
{foreach from=$pluginMenuItems item=pluginInfo key=plugin}
{if $adminRow.type==0||$adminRow.privileges.plugins.$plugin}
{if $adminRow.type==0||isset($adminRow.privileges.plugins.$plugin)}
<li><a href="plugin.page.php?sid={$sid}&plugin={$plugin}" ><img src="{if $pluginInfo.icon}../plugins/templates/images/{$pluginInfo.icon}{else}./templates/images/wlayout_add.png{/if}" />{$pluginInfo.title}</a></li>
{/if}
{/foreach}
@ -129,7 +129,7 @@
{foreach from=$tabs item=tab}
<li{if $tab.active} class="active"{/if}>
<a href="{$tab.link}sid={$sid}">
<img src="{if $tab.relIcon}./templates/images/{$tab.relIcon}{elseif $tab.icon}{$tab.icon}{else}./templates/images/ico_prefs_misc.png{/if}" border="0" alt="" />
<img src="{if !empty($tab.relIcon)}./templates/images/{$tab.relIcon}{elseif $tab.icon}{$tab.icon}{else}./templates/images/ico_prefs_misc.png{/if}" border="0" alt="" />
{$tab.title}
</a>
</li>

View file

@ -47,7 +47,7 @@
</table>
</fieldset>
{if $reloadMenu}
{if isset($reloadMenu)}
<script>
<!--
parent.frames['menu'].location.href = 'main.php?action=menu&item=4&sid={$sid}';

View file

@ -72,7 +72,7 @@
<td>{$prefDetails.title}</td>
<td>
{if $prefDetails.type==1}
<input type="text" name="types[{$apTypeID}][prefs][{$prefKey}]" value="{text value=$prefDetails.value}" style="width:100px;" class="smallInput" />
<input type="text" name="types[{$apTypeID}][prefs][{$prefKey}]" value="{if isset($prefDetails.value)}{text value=$prefDetails.value}{/if}" style="width:100px;" class="smallInput" />
{/if}
</td>
</tr>

View file

@ -11,7 +11,7 @@
</tr>
<tr>
<td class="td1" width="160">{lng p="category"}:</td>
<td class="td2"><input type="text" name="category" size="36" value="{text value=$ad.category allowEmpty=true}" /></td>
<td class="td2"><input type="text" name="category" size="36" value="{if isset($ad.category)}{text value=$ad.category allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1" width="160">{lng p="weight"}:</td>

View file

@ -42,7 +42,7 @@
{elseif $fieldInfo.type==2}
<input type="checkbox" name="prefs[{$key}][{$fieldKey}]" value="1"{if $fieldInfo.value} checked="checked"{/if} />
{elseif $fieldInfo.type==1}
<input type="text" style="width:85%;" name="prefs[{$key}][{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
<input type="text" style="width:85%;" name="prefs[{$key}][{$fieldKey}]" value="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
{/if}
</td>
</tr>

View file

@ -148,7 +148,7 @@
<td class="td2">
<input type="checkbox" id="logs_autodelete" name="logs_autodelete"{if $bm_prefs.logs_autodelete=='yes'} checked="checked"{/if} />
<label for="logs_autodelete">{lng p="enableolder"}</label>
<input type="number" name="logs_autodelete_days" value="{text value=$bm_prefs.logs_autodelete_days}" size="4" min="1" step="1" />
<input type="number" name="logs_autodelete_days" value="{if isset($bm_prefs.logs_autodelete_days)}{text value=$bm_prefs.logs_autodelete_days}{/if}" size="4" min="1" step="1" />
{lng p="days"}<br />
<input type="checkbox" id="logs_autodelete_archive" name="logs_autodelete_archive"{if $bm_prefs.logs_autodelete_archive=='yes'} checked="checked"{/if} />
<label for="logs_autodelete_archive">{lng p="savearc"}</label>

View file

@ -7,7 +7,7 @@
<td width="40" valign="top" rowspan="6"><img src="{$tpldir}images/coupon32.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="150">{lng p="code"}:</td>
<td class="td2">
<input type="text" name="code" value="{text value=$coupon.code}" style="width:85%;" />
<input type="text" name="code" value="{if isset($coupon.code)}{text value=$coupon.code}{/if}" style="width:85%;" />
</td>
</tr>
<tr>
@ -16,7 +16,7 @@
<input type="checkbox" onchange="EBID('count').value=this.checked?'-1':'0';"{if $coupon.anzahl==-1} checked="checked"{/if} id="count_unlim" />
<label for="count_unlim"><b>{lng p="unlimited"}</b></label>
{lng p="or"}
<input type="text" size="6" name="anzahl" id="count" value="{text value=$coupon.anzahl}" onkeyup="EBID('count_unlim').checked=this.value=='-1';" />
<input type="text" size="6" name="anzahl" id="count" value="{if isset($coupon.anzahl)}{text value=$coupon.anzahl}{/if}" onkeyup="EBID('count_unlim').checked=this.value=='-1';" />
</td>
</tr>
<tr>

View file

@ -23,7 +23,7 @@
<td style="text-align:center;"><input type="checkbox" name="domains[{$domain.domain}][in_login]"{if $domain.in_login} checked="checked"{/if} /></td>
<td style="text-align:center;"><input type="checkbox" name="domains[{$domain.domain}][in_signup]"{if $domain.in_signup} checked="checked"{/if} /></td>
<td style="text-align:center;"><input type="checkbox" name="domains[{$domain.domain}][in_aliases]"{if $domain.in_aliases} checked="checked"{/if} /></td>
<td><input type="text" name="domains[{$domain.domain}][pos]" value="{text value=$domain.pos allowEmpty=true}" size="6" /></td>
<td><input type="text" name="domains[{$domain.domain}][pos]" value="{if isset($domain.pos)}{text value=$domain.pos allowEmpty=true}{/if}" size="6" /></td>
<td>
<a href="prefs.common.php?action=domains&delete={$domain.urlDomain}&sid={$sid}" onclick="return confirm('{lng p="realdel"}');"><img src="{$tpldir}images/delete.png" border="0" alt="{lng p="edit"}" width="16" height="16" /></a>
</td>

View file

@ -48,9 +48,9 @@
<td><img src="{$tpldir}images/phrases.png" border="0" alt="" width="16" height="16" /></td>
<td><a name="{$text.key}" />{$text.title}<br /><small>{text value=$text.key}</small></td>
<td>
{if $customTextsHTML[$text.key]}<div style="border: 1px solid #DDDDDD;background-color:#FFFFFF;">{/if}
<textarea onfocus="this.style.height='240px';" onblur="this.style.height='100px';" style="width:99%;height:{if $customTextsHTML[$text.key]}350{else}100{/if}px;" name="text-{$text.key}" id="text-{$text.key}">{text value=$text.text allowEmpty=true}</textarea>
{if $customTextsHTML[$text.key]}
{if isset($customTextsHTML[$text.key])}<div style="border: 1px solid #DDDDDD;background-color:#FFFFFF;">{/if}
<textarea onfocus="this.style.height='240px';" onblur="this.style.height='100px';" style="width:99%;height:{if isset($customTextsHTML[$text.key])}350{else}100{/if}px;" name="text-{$text.key}" id="text-{$text.key}">{text value=$text.text allowEmpty=true}</textarea>
{if isset($customTextsHTML[$text.key])}
</div>
<script>
<!--

View file

@ -11,12 +11,12 @@
</tr>
<tr>
<td class="td1">{lng p="pay_notification"}:</td>
<td class="td2"><input id="send_pay_notification" name="send_pay_notification"{if $bm_prefs.send_pay_notification=='yes'} checked="checked"{/if} type="checkbox" /><label for="send_pay_notification"> {lng p="to2"}: </label><input type="text" name="pay_notification_to" value="{text value=$bm_prefs.pay_notification_to allowEmpty=true}" size="24" /></td>
<td class="td2"><input id="send_pay_notification" name="send_pay_notification"{if $bm_prefs.send_pay_notification=='yes'} checked="checked"{/if} type="checkbox" /><label for="send_pay_notification"> {lng p="to2"}: </label><input type="text" name="pay_notification_to" value="{if isset($bm_prefs.pay_notification_to)}{text value=$bm_prefs.pay_notification_to allowEmpty=true}{/if}" size="24" /></td>
</tr>
<tr>
<td class="td1">{lng p="sysmailsender"}:</td>
<td class="td2">
"<input type="text" name="pay_emailfrom" value="{text value=$bm_prefs.pay_emailfrom allowEmpty=true}" size="14" />"
"<input type="text" name="pay_emailfrom" value="{if isset($bm_prefs.pay_emailfrom)}{text value=$bm_prefs.pay_emailfrom allowEmpty=true}{/if}" size="14" />"
&lt;<input type="text" name="pay_emailfromemail" value="{email value=$bm_prefs.pay_emailfromemail}" size="22" />&gt;
</td>
</tr>

View file

@ -7,7 +7,7 @@
<tr>
<td width="40" valign="top" rowspan="3"><img src="{$tpldir}images/ico_pay_banktransfer.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="180">{lng p="title"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="title" value="{text value=$row.title allowEmpty=true}" /></td>
<td class="td2"><input type="text" style="width:85%;" name="title" value="{if isset($row.title)}{text value=$row.title allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="enable"}?</td>
@ -43,16 +43,16 @@
{assign var=lastPos value=$field.pos}
<tr class="{$class}">
<td><img src="{$tpldir}images/field.png" border="0" alt="" width="16" height="16" /></td>
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][title]" value="{text value=$field.title allowEmpty=true}" /></td>
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][title]" value="{if isset($field.title)}{text value=$field.title allowEmpty=true}{/if}" /></td>
<td><select name="fields[{$fieldID}][type]">
{foreach from=$fieldTypeTable key=id item=text}
<option value="{$id}"{if $id==$field.type} selected="selected"{/if}>{$text}</option>
{/foreach}
</select></td>
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][options]" value="{text value=$field.options allowEmpty=true}" /></td>
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][options]" value="{if isset($field.options)}{text value=$field.options allowEmpty=true}{/if}" /></td>
<td style="text-align:center;"><input type="checkbox" name="fields[{$fieldID}][oblig]"{if $field.oblig} checked="checked"{/if} /></td>
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][rule]" value="{text value=$field.rule allowEmpty=true}" /></td>
<td><input type="text" name="fields[{$fieldID}][pos]" value="{text value=$field.pos allowEmpty=true}" size="5" /></td>
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][rule]" value="{if isset($field.rule)}{text value=$field.rule allowEmpty=true}{/if}" /></td>
<td><input type="text" name="fields[{$fieldID}][pos]" value="{if isset($field.pos)}{text value=$field.pos allowEmpty=true}{/if}" size="5" /></td>
<td style="text-align:center;"><input type="checkbox" name="fields[{$fieldID}][delete]" /></td>
</tr>
{/foreach}

View file

@ -6,11 +6,11 @@
<tr>
<td width="40" valign="top" rowspan="6"><img src="{$tpldir}images/field32.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="150">{lng p="field"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="feld" value="{text value=$field.feld allowEmpty=true}" /></td>
<td class="td2"><input type="text" style="width:85%;" name="feld" value="{if isset($field.feld)}{text value=$field.feld allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="validityrule"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="rule" value="{text value=$field.rule allowEmpty=true}" />
<td class="td2"><input type="text" style="width:85%;" name="rule" value="{if isset($field.rule)}{text value=$field.rule allowEmpty=true}{/if}" />
<br /><small>{lng p="pfrulenote"}</small></td>
</tr>
<tr>
@ -36,7 +36,7 @@
</tr>
<tr>
<td class="td1">{lng p="options"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="extra" value="{text value=$field.extra allowEmpty=true}" />
<td class="td2"><input type="text" style="width:85%;" name="extra" value="{if isset($field.extra)}{text value=$field.extra allowEmpty=true}{/if}" />
<br /><small>{lng p="optionsdesc"}</small></td>
</tr>
</table>

View file

@ -6,11 +6,11 @@
<tr>
<td width="40" valign="top" rowspan="5"><img src="{$tpldir}images/rule32.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="150">{lng p="field"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="field" value="{text value=$rule.field}" /></td>
<td class="td2"><input type="text" style="width:85%;" name="field" value="{if isset($rule.field)}{text value=$rule.field}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="expression"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="expression" value="{text value=$rule.expression allowEmpty=true}" /></td>
<td class="td2"><input type="text" style="width:85%;" name="expression" value="{if isset($rule.expression)}{text value=$rule.expression allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="action"}:</td>

View file

@ -6,7 +6,7 @@
<tr>
<td width="40" valign="top" rowspan="5"><img src="{$tpldir}images/gateway32.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="150">{lng p="title"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="titel" value="{text value=$gateway.titel}" /></td>
<td class="td2"><input type="text" style="width:85%;" name="titel" value="{if isset($gateway.titel)}{text value=$gateway.titel}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="getstring"}:</td>
@ -14,15 +14,15 @@
</tr>
<tr>
<td class="td1">{lng p="returnvalue"}:</td>
<td class="td2"><input type="text" size="10" name="success" value="{text value=$gateway.success allowEmpty=true}" /></td>
<td class="td2"><input type="text" size="10" name="success" value="{if isset($gateway.success)}{text value=$gateway.success allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="user"}:</td>
<td class="td2"><input type="text" size="36" id="user" name="user" value="{text value=$gateway.user allowEmpty=true}" /></td>
<td class="td2"><input type="text" size="36" id="user" name="user" value="{if isset($gateway.user)}{text value=$gateway.user allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="password"}:</td>
<td class="td2"><input type="password" autocomplete="off" size="36" id="pass" name="pass" value="{text value=$gateway.pass allowEmpty=true}" /></td>
<td class="td2"><input type="password" autocomplete="off" size="36" id="pass" name="pass" value="{if isset($gateway.pass)}{text value=$gateway.pass allowEmpty=true}{/if}" /></td>
</tr>
</table>

View file

@ -6,7 +6,7 @@
<tr>
<td width="40" valign="top" rowspan="6"><img src="{$tpldir}images/type32.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="150">{lng p="title"}:</td>
<td class="td2"><input type="text" style="width:85%;" name="titel" value="{text value=$type.titel}" /></td>
<td class="td2"><input type="text" style="width:85%;" name="titel" value="{if isset($type.titel)}{text value=$type.titel}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="gateway"}:</td>
@ -19,7 +19,7 @@
</tr>
<tr>
<td class="td1">{lng p="type"}:</td>
<td class="td2"><input type="text" size="6" name="typ" value="{text value=$type.typ allowEmpty=true}" /></td>
<td class="td2"><input type="text" size="6" name="typ" value="{if isset($type.typ)}{text value=$type.typ allowEmpty=true}{/if}" /></td>
</tr>
<tr>
<td class="td1">{lng p="price"}:</td>

View file

@ -26,7 +26,7 @@
{elseif $fieldInfo.type==2}
<input type="checkbox" name="prefs[{$fieldKey}]" value="1"{if $fieldInfo.value} checked="checked"{/if} />
{elseif $fieldInfo.type==1}
<input type="text" style="width:85%;" name="prefs[{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
<input type="text" style="width:85%;" name="prefs[{$fieldKey}]" value="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
{/if}
</td>
</tr>

View file

@ -12,7 +12,7 @@
{/foreach}
</div>
<script src="../clientlib/dragcontainer.js" type="text/javascript"></script>
<script src="../clientlib/dragcontainer.js?{fileDateSig file="../../clientlib/dragcontainer.js"}" type="text/javascript"></script>
<script>
<!--
var dc = new dragContainer('dashboard', 3, 'dc');

View file

@ -42,7 +42,7 @@
{elseif $fieldInfo.type==2}
<input type="checkbox" name="prefs[{$groupName}][{$fieldKey}]" value="1"{if $fieldInfo.value} checked="checked"{/if} />
{elseif $fieldInfo.type==1}
<input type="text" style="width:85%;" name="prefs[{$groupName}][{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
<input type="text" style="width:85%;" name="prefs[{$groupName}][{$fieldKey}]" value="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
{/if}
</td>
</tr>

View file

@ -1,6 +1,6 @@
<form method="post" action="users.php?do=edit&id={$user.id}&save=true&sid={$sid}" onsubmit="spin(this)">
{if isset($msg)}
{if !empty($msg)}
<center style="margin:1em;">
<div class="note">
{$msg}
@ -29,25 +29,25 @@
</tr>
<tr>
<td class="td1">{lng p="firstname"}:</td>
<td class="td2"><input type="text" name="vorname" value="{text value=$user.vorname allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="vorname" value="{if isset($user.vorname)}{text value=$user.vorname allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="lastname"}:</td>
<td class="td2"><input type="text" name="nachname" value="{text value=$user.nachname allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="nachname" value="{if isset($user.nachname)}{text value=$user.nachname allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="company"}:</td>
<td class="td2"><input type="text" name="company" value="{text value=$user.company allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="company" value="{if isset($user.company)}{text value=$user.company allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="streetno"}:</td>
<td class="td2"><input type="text" name="strasse" value="{text value=$user.strasse allowEmpty=true}" style="width:55%;" />
<input type="text" name="hnr" value="{text value=$user.hnr allowEmpty=true}" style="width:15%;" /></td>
<td class="td2"><input type="text" name="strasse" value="{if isset($user.strasse)}{text value=$user.strasse allowEmpty=true}{/if}" style="width:55%;" />
<input type="text" name="hnr" value="{if isset($user.hnr)}{text value=$user.hnr allowEmpty=true}{/if}" style="width:15%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="zipcity"}:</td>
<td class="td2"><input type="text" name="plz" value="{text value=$user.plz allowEmpty=true}" style="width:20%;" />
<input type="text" name="ort" value="{text value=$user.ort allowEmpty=true}" style="width:50%;" /></td>
<td class="td2"><input type="text" name="plz" value="{if isset($user.plz)}{text value=$user.plz allowEmpty=true}{/if}" style="width:20%;" />
<input type="text" name="ort" value="{if isset($user.ort)}{text value=$user.ort allowEmpty=true}{/if}" style="width:50%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="country"}:</td>
@ -59,15 +59,15 @@
</tr>
<tr>
<td class="td1">{lng p="tel"}:</td>
<td class="td2"><input type="text" name="tel" value="{text value=$user.tel allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="tel" value="{if isset($user.tel)}{text value=$user.tel allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="fax"}:</td>
<td class="td2"><input type="text" name="fax" value="{text value=$user.fax allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="fax" value="{if isset($user.fax)}{text value=$user.fax allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="cellphone"}:</td>
<td class="td2"><input type="text" name="mail2sms_nummer" value="{text value=$user.mail2sms_nummer allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="mail2sms_nummer" value="{if isset($user.mail2sms_nummer)}{text value=$user.mail2sms_nummer allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="altmail"}:</td>
@ -75,7 +75,7 @@
</tr>
<tr>
<td class="td1">{lng p="taxid"}:</td>
<td class="td2"><input type="text" name="taxid" value="{text value=$user.taxid}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="taxid" value="{if isset($user.taxid)}{text value=$user.taxid}{/if}" style="width:85%;" /></td>
</tr>
{foreach from=$profileFields item=profileField}
@ -84,7 +84,7 @@
<td class="td1">{$profileField.title}:</td>
<td class="td2">
{if $profileField.type==1}
<input type="text" name="field_{$profileField.id}" value="{text value=$profileField.value allowEmpty=true}" style="width:85%;" />
<input type="text" name="field_{$profileField.id}" value="{if isset($profileField.value)}{text value=$profileField.value allowEmpty=true}{/if}" style="width:85%;" />
{elseif $profileField.type==2}
<input type="checkbox" name="field_{$profileField.id}"{if $profileField.value} checked="checked"{/if} />
{elseif $profileField.type==4}
@ -95,7 +95,7 @@
</select>
{elseif $profileField.type==8}
{foreach from=$profileField.extra item=item}
<input type="radio" id="field_{$profileField.id}_{$item}" name="field_{$profileField.id}" value="{text value=$item allowEmpty=true}"{if $profileField.value==$item} checked="checked"{/if} />
<input type="radio" id="field_{$profileField.id}_{$item}" name="field_{$profileField.id}" value="{if isset($item)}{text value=$item allowEmpty=true}{/if}"{if $profileField.value==$item} checked="checked"{/if} />
<label for="field_{$profileField.id}_{$item}"><b>{$item}</b></label> &nbsp;
{/foreach}
{elseif $profileField.type==32}
@ -270,8 +270,8 @@
<table width="100%">
<tr>
<td class="td1" width="160">{lng p="re"}/{lng p="fwd"}:</td>
<td class="td2"><input type="text" name="re" value="{text value=$user.re allowEmpty=true}" style="width:35%;" />
<input type="text" name="fwd" value="{text value=$user.fwd allowEmpty=true}" style="width:35%;" /></td>
<td class="td2"><input type="text" name="re" value="{if isset($user.re)}{text value=$user.re allowEmpty=true}{/if}" style="width:35%;" />
<input type="text" name="fwd" value="{if isset($user.fwd)}{text value=$user.fwd allowEmpty=true}{/if}" style="width:35%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="mail2sms"}:</td>
@ -300,11 +300,11 @@
</tr>
<tr>
<td class="td1">{lng p="dateformat"}:</td>
<td class="td2"><input type="text" name="datumsformat" value="{text value=$user.datumsformat allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="datumsformat" value="{if isset($user.datumsformat)}{text value=$user.datumsformat allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="sendername"}:</td>
<td class="td2"><input type="text" name="absendername" value="{text value=$user.absendername allowEmpty=true}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="absendername" value="{if isset($user.absendername)}{text value=$user.absendername allowEmpty=true}{/if}" style="width:85%;" /></td>
</tr>
</table>
</div>

View file

@ -4,7 +4,7 @@
<input type="hidden" name="sortOrder" id="sortOrder" value="{$sortOrder}" />
<input type="hidden" name="singleAction" id="singleAction" value="" />
<input type="hidden" name="singleID" id="singleID" value="" />
{if $queryString}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
{if !empty($queryString)}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
{if isset($searchQuery)}
<fieldset>
@ -128,7 +128,7 @@
</td>
<td colspan="3" class="td2">
{foreach from=$fields item=field key=fieldID}
<input type="checkbox" name="field_{$fieldID}" id="field_{$fieldID}"{if $field.checked} checked="checked"{/if} />
<input type="checkbox" name="field_{$fieldID}" id="field_{$fieldID}"{if !empty($field.checked)} checked="checked"{/if} />
<label for="field_{$fieldID}"><b>{text value=$field.feld}</b></label><br />
{/foreach}
</td>

View file

@ -29,6 +29,9 @@
<label for="searchIn_telfaxmobile"><b>{lng p="tel"} / {lng p="fax"} / {lng p="cellphone"}</b></label></td>
</tr>
<tr>
<td><input type="checkbox" name="searchIn[absendername]" id="searchIn_absendername" checked="checked" />
<label for="searchIn_absendername"><b>{lng p="sendername"}</b></label>
</td>
<td><input type="checkbox" id="searchIn_all" checked="checked" onchange="invertSelection(document.forms.f1,'searchIn',true,this.checked)" />
<label for="searchIn_all"><b>{lng p="all"}</b></label></td>
<td colspan="2">&nbsp;</td>

View file

@ -4,7 +4,7 @@
<input type="hidden" name="sortOrder" id="sortOrder" value="{$sortOrder}" />
<input type="hidden" name="singleAction" id="singleAction" value="" />
<input type="hidden" name="singleID" id="singleID" value="" />
{if $queryString}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
{if !empty($queryString)}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
<fieldset>
<legend>{lng p="transactions"} ({email value=$user.email}, #{$user.id})</legend>

View file

@ -6,7 +6,7 @@
<tr>
<td width="40" valign="top" rowspan="2"><img src="{$tpldir}images/workgroup_mail32.png" border="0" alt="" width="32" height="32" /></td>
<td class="td1" width="130">{lng p="title"}:</td>
<td class="td2"><input type="text" name="titel" value="{text value=$folder.titel}" style="width:85%;" /></td>
<td class="td2"><input type="text" name="titel" value="{if isset($folder.titel)}{text value=$folder.titel}{/if}" style="width:85%;" /></td>
</tr>
<tr>
<td class="td1">{lng p="itemsperpage"}:</td>

View file

@ -277,7 +277,7 @@ if($_REQUEST['action'] == 'users')
// do the query!
$users = array();
$res = $db->Query('SELECT id,email,vorname,nachname,strasse,hnr,plz,ort,gruppe,gesperrt,lastlogin,profilfelder ' . $theQuery . ' '
$res = $db->Query('SELECT id,email,vorname,nachname,strasse,hnr,plz,ort,gruppe,gesperrt,lastlogin,profilfelder,absendername ' . $theQuery . ' '
. 'ORDER BY ' . $sortBy . ' '
. $sortOrder . ' '
. 'LIMIT ' . $startPos . ',' . $perPage);
@ -903,6 +903,8 @@ else if($_REQUEST['action'] == 'search')
$fields = array_merge($fields, array('strasse', 'hnr', 'plz', 'ort', 'land'));
else if($field == 'telfaxmobile')
$fields = array_merge($fields, array('tel', 'fax', 'mail2sms_nummer'));
else if($field == 'absendername')
$fields[] = 'absendername';
}
// build query string

View file

@ -189,11 +189,6 @@ if($_REQUEST['action'] == 'welcome')
else if(!is_writeable(B1GMAIL_DATA_DIR))
$notices[] = array('type' => 'error',
'text' => sprintf($lang_admin['dataperms'], B1GMAIL_DATA_DIR));
// struct storage?
if($bm_prefs['structstorage'] == 'yes' && ini_get('safe_mode'))
$notices[] = array('type' => 'error',
'text' => $lang_admin['structsafewarn'],
'link' => 'prefs.common.php?');
// dynamic recipient detection but no receive rules
if($bm_prefs['recipient_detection'] == 'dynamic')
@ -291,7 +286,7 @@ if($_REQUEST['action'] == 'welcome')
'link' => 'prefs.common.php?');
// struct storage recommended?
if($bm_prefs['structstorage'] == 'no' && !ini_get('safe_mode'))
if($bm_prefs['structstorage'] == 'no')
$notices[] = array('type' => 'info',
'text' => $lang_admin['structrec'],
'link' => 'prefs.common.php?');

View file

@ -41,7 +41,7 @@ if(isset($_COOKIE['bm_language'])
}
}
include('./serverlib/init.inc.php');
require './serverlib/init.inc.php';
if(isset($_REQUEST['sid']) && trim($_REQUEST['sid']) != '')
RequestPrivileges(PRIVILEGES_USER, true) || RequestPrivileges(PRIVILEGES_ADMIN, true);

View file

@ -1,5 +1,72 @@
CKEditor 4 Changelog
====================
⚠️️️ **CKEditor 4 (the open source edition) is no longer maintained.** ⚠️
If you would like to keep access to future CKEditor 4 security patches, check the [Extended Support Model](https://ckeditor.com/ckeditor-4-support/), which guarantees **security updates and critical bug fixes until December 2026**. Alternatively, [upgrade to CKEditor 5](https://ckeditor.com/docs/ckeditor5/latest/updating/ckeditor4/migration-from-ckeditor-4.html).
## CKEditor 4.22.0 / 4.22.1
⚠️ This is the last open source release of CKEditor 4. As announced in 2018, CKEditor 4 has reached its End of Life in June 2023.
New Features:
* [#5316](https://github.com/ckeditor/ckeditor4/issues/5316): Added vertical margins support for list elements in the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin.
* [#5410](https://github.com/ckeditor/ckeditor4/issues/5410): Added the ability to indicate the language of styles in the [Styles Combo](https://ckeditor.com/cke4/addon/stylescombo) plugin via the [`config.styleSet`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-stylesSet) configuration option.
* [#5510](https://github.com/ckeditor/ckeditor4/issues/5510): Added notification system to the editor informing users that the editor version is up-to-date and secure. See [`config.versionCheck`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-versionCheck) configuration option to learn more.
Fixed Issues:
* [#5437](https://github.com/ckeditor/ckeditor4/issues/5437): Fixed: Incorrect indication of selected items in combo boxes. The selected item was unmarked upon each opening of the combo box.
* [#5495](https://github.com/ckeditor/ckeditor4/issues/5495): Fixed: Insufficient color ratio for links inside [Notifications](https://ckeditor.com/cke4/addon/notification).
Other Changes:
* [#5412](https://github.com/ckeditor/ckeditor4/issues/5412): Prevent using `document.domain` in Firefox in the [Preview](https://ckeditor.com/cke4/addon/preview) plugin.
Note: CKEditor 4.22.1 has been released immediately after 4.22.0 to fix the README issues on [npm](https://www.npmjs.com/) and contains no changes vs 4.22.0.
## CKEditor 4.21.0
**Security Updates:**
A cross-site scripting vulnerability has been discovered affecting [Iframe Dialog](https://ckeditor.com/cke4/addon/iframe) and [Media Embed](https://ckeditor.com/cke4/addon/embed) plugins.
This vulnerability might affect a small percentage of integrators that depend on dynamic editor initialization/destroy mechanism. See [GitHub advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-vh5c-xwqv-cv9g) for more details.
**Potential breaking changes**
In some rare cases, a security release may introduce a breaking change to your application. We have provided configuration options that will help you mitigate any potential issues with the upgrade:
- Starting from version 4.21, the [Iframe Dialog](https://ckeditor.com/cke4/addon/iframe) plugin applies the `sandbox` attribute by default, which restricts JavaScript code execution in the iframe element. To change this behavior, configure the [`config.iframe_attributes`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-iframe_attributes) option.
- Starting from version 4.21, the [Media Embed](https://ckeditor.com/cke4/addon/embed) plugin regenerates the entire content of the embed widget by default. To change this behavior, configure the [`config.embed_keepOriginalContent`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-embed_keepOriginalContent) option.
If you choose to change either of the above options, make sure to properly configure [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to avoid any potential security issues that may arise from embedding iframe elements on your web page.
You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions.
**An upgrade is highly recommended!**
New Features:
* [#4400](https://github.com/ckeditor/ckeditor4/issues/4400): Added the [`config.uploadImage_supportedTypes`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-uploadImage_supportedTypes) configuration option allowing to change the image formats accepted by the [Upload Image](https://ckeditor.com/cke4/addon/uploadimage) plugin. Thanks to [SilverYoCha](https://github.com/SilverYoCha)!
Fixed Issues:
* [#5431](https://github.com/ckeditor/ckeditor4/issues/5431): Fixed: No notification is shown when pasting or dropping unsupported image types into the editor.
## CKEditor 4.20.2
Fixed Issues:
* [#439](https://github.com/ckeditor/ckeditor4/issues/439): Fixed: Incorrect <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> navigation for radio buttons inside the dialog.
* [#4829](https://github.com/ckeditor/ckeditor4/issues/4829): Fixed: Undo reversed entire table content instead of a single cell. Thanks to that fix, multiple changes in a table can be undone one by one.
* [#5396](https://github.com/ckeditor/ckeditor4/issues/5396): Fixed: Event listeners for `popstate` and `hashchange` events on the `window`, added by the [Maximize](https://ckeditor.com/cke4/addon/maximize) plugin, were not removed when destroying the editor instance.
* [#5414](https://github.com/ckeditor/ckeditor4/issues/5414): Fixed: File and image uploaders based on the [Upload Widget plugin](https://ckeditor.com/cke4/addon/uploadwidget) and [Easy Image plugin ](https://ckeditor.com/cke4/addon/easyimage) didn't fire the [`change` event](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-change) upon finishing upload, resulting in passing incorrect data in form controls for integration frameworks, like [Reactive forms in Angular](https://angular.io/guide/reactive-forms).
* [#698](https://github.com/ckeditor/ckeditor4/issues/698): Fixed: An error was thrown after applying formatting to the widget with inline editable and switching to the source mode. Thanks to [Glen](https://github.com/glen-84)!
API changes:
* [#3540](https://github.com/ckeditor/ckeditor4/issues/3540): The [startup data](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_widget.html) passed to the widget's command is now used to also populate the widget's template.
* [#5352](https://github.com/ckeditor/ckeditor4/issues/5352): Added the [`colorButton_contentsCss`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-colorButton_contentsCss) configuration option allowing to add custom CSS to the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) menu content. Thanks to [mihilion](https://github.com/mihilion)!
## CKEditor 4.20.1

View file

@ -1,8 +1,16 @@
Software License Agreement
==========================
Software License Agreement for CKEditor 4 LTS (4.23.0 and above)
================================================================
CKEditor - The text editor for Internet - https://ckeditor.com/
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
CKEditor - The text editor for Internet - https://ckeditor.com/ <br>
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
CKEditor 4 LTS ("Long Term Support") is available under exclusive terms of the [Extended Support Model](https://ckeditor.com/ckeditor-4-support/). [Contact us](https://ckeditor.com/contact/) to obtain a commercial license.
Software License Agreement for CKEditor 4.22.* and below
========================================================
CKEditor - The text editor for Internet - https://ckeditor.com/ <br>
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
Licensed under the terms of any of the following licenses at your
choice:
@ -37,7 +45,7 @@ done by developers outside of CKSource with their express permission.
The following libraries are included in CKEditor under the MIT license (see Appendix D):
* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2022, CKSource Holding sp. z o.o.
* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2023, CKSource Holding sp. z o.o.
* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca.
* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others.
* ES6Promise - Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors.

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},

View file

@ -1,5 +1,5 @@
/**
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/
*/

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
/**
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
*/

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add("paste",function(c){function k(a){var b=new CKEDITOR.dom.document(a.document),g=b.getBody(),d=b.getById("cke_actscrpt");d&&d.remove();g.setAttribute("contenteditable",!0);g.on(e.mainPasteEvent,function(a){a=e.initPasteDataTransfer(a);f?a!=f&&(f=e.initPasteDataTransfer()):f=a});if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on("blur",function(){b.$.selection.empty()});b.on("keydown",function(a){a=a.data;var b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+

View file

@ -1,4 +1,4 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add("anchor",function(c){function f(b,a){return b.createFakeElement(b.document.createElement("a",{attributes:a}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,getModel:function(b){var a=b.getSelection();b=a.getRanges()[0];a=a.getSelectedElement();b.shrink(CKEDITOR.SHRINK_ELEMENT);(a=b.getEnclosedNode())&&a.type===CKEDITOR.NODE_TEXT&&(a=a.getParent());a&&!a.is("a")&&(a=a.getAscendant("a")||a);b=a&&a.type===CKEDITOR.NODE_ELEMENT&&("anchor"===

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
(function(){function u(){var c=this.getDialog(),p=c._.editor,n=p.config.linkPhoneRegExp,q=p.config.linkPhoneMsg,p=CKEDITOR.dialog.validate.notEmpty(p.lang.link.noTel).apply(this);if(!c.getContentElement("info","linkType")||"tel"!=c.getValueOf("info","linkType"))return!0;if(!0!==p)return p;if(n)return CKEDITOR.dialog.validate.regex(n,q).call(this)}CKEDITOR.dialog.add("link",function(c){function p(a,b){var c=a.createRange();c.setStartBefore(b);c.setEndAfter(b);return c}var n=CKEDITOR.plugins.link,q,

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add("smiley",function(f){for(var e=f.config,a=f.lang.smiley,h=e.smiley_images,g=e.smiley_columns||8,k,m=function(l){var c=l.data.getTarget(),b=c.getName();if("a"==b)c=c.getChild(0);else if("img"!=b)return;var b=c.getAttribute("cke_src"),a=c.getAttribute("title"),c=f.document.createElement("img",{attributes:{src:b,"data-cke-saved-src":b,title:a,alt:a,width:c.$.width,height:c.$.height}});f.insertElement(c);k.hide();l.data.preventDefault()},q=CKEDITOR.tools.addFunction(function(a,c){a=

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add("sourcedialog",function(a){var b=CKEDITOR.document.getWindow().getViewPaneSize(),e=Math.min(b.width-70,800),b=b.height/1.5,d;return{title:a.lang.sourcedialog.title,minWidth:100,minHeight:100,onShow:function(){this.setValueOf("main","data",d=a.getData())},onOk:function(){function b(f,c){a.focus();a.setData(c,function(){f.hide();var b=a.createRange();b.moveToElementEditStart(a.editable());b.select()})}return function(){var a=this.getValueOf("main","data").replace(/\r/g,""),c=this;

View file

@ -1,5 +1,5 @@
/**
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
@media (max-width: 900px) {

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -118,7 +118,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p class="grid-width-100" id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</footer>

View file

@ -1,5 +1,5 @@
/**
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
var SF=function(){function d(a){return(a=a.attributes?a.attributes.getNamedItem("class"):null)?a.value.split(" "):[]}function c(a){var e=document.createAttribute("class");e.value=a.join(" ");return e}var b={attachListener:function(a,e,b){if(a.addEventListener)a.addEventListener(e,b,!1);else if(a.attachEvent)a.attachEvent("on"+e,function(){b.apply(a,arguments)});else throw Error("Could not attach event.");}};b.indexOf=function(){var a=Array.prototype.indexOf;return"function"===a?function(e,b){return a.call(e,

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -78,7 +78,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -203,7 +203,7 @@ Second line of text preceded by two line breaks.</textarea>
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -52,7 +52,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*
* Styles used by the XHTML 1.1 sample page (xhtml.html).

View file

@ -1,7 +1,7 @@
<!DOCTYPE html>
<?php
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
?>
@ -53,7 +53,7 @@ if (!empty($_POST))
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",az:"Azerbaijani",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German","de-ch":"German (Switzerland)",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish","es-mx":"Spanish (Mexico)",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician",

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -501,7 +501,7 @@ CKEDITOR.replace( 'editor7', {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,5 +1,5 @@
/**
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -183,7 +183,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -137,7 +137,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -99,7 +99,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -119,7 +119,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -307,7 +307,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -117,7 +117,7 @@ var editor = CKEDITOR.inline( document.getElementById( 'editable' ) );
https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -106,7 +106,7 @@ var editor = CKEDITOR.inline( 'article-body' );
https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -96,7 +96,7 @@ $( document ).ready( function() {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -69,7 +69,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -53,7 +53,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -52,7 +52,7 @@ CKEDITOR.replace( '<em>textarea_id</em>' )
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,5 +1,5 @@
/*
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

View file

@ -1,5 +1,5 @@
/**
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

View file

@ -9,7 +9,7 @@
To save the content created with CKEditor you need to read the POST data on the server
side and write it to a file or the database.
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-------------------------------------------------------------------------------------------

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -114,7 +114,7 @@ CKEDITOR.replace( 'textarea_id', {
https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -71,7 +71,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -228,7 +228,7 @@ CKEDITOR.replace( <em>'textarea_id'</em>, {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -65,7 +65,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -115,7 +115,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -73,7 +73,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
@ -227,7 +227,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
CKEditor - The text editor for the Internet - <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</div>
</body>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<!--[if IE 8]><html class="ie8"><![endif]-->
@ -137,7 +137,7 @@ For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
</p>
<p class="grid-width-100" id="copy">
Copyright &copy; 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
Copyright &copy; 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
</p>
</footer>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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