Compare commits
No commits in common. "main" and "7.4.1-beta3-pl1" have entirely different histories.
main
...
7.4.1-beta
581 changed files with 16720 additions and 46701 deletions
|
@ -17,8 +17,7 @@ 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. If you use Docker, you can also
|
||||
use our docker template in `docker-dev`.
|
||||
on Windows can be achieved with a WSL setup.
|
||||
|
||||
In order to install a development environment, proceed as follows:
|
||||
1. Clone the repository
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
# 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
|
|
@ -1,15 +0,0 @@
|
|||
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
|
|
@ -1,29 +0,0 @@
|
|||
**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.
|
|
@ -1,32 +0,0 @@
|
|||
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
|
|
@ -1,31 +0,0 @@
|
|||
#!/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
|
|
@ -58,7 +58,7 @@ if($_REQUEST['action'] == 'db')
|
|||
{
|
||||
// read default structure
|
||||
include('../serverlib/database.struct.php');
|
||||
$databaseStructure = json_decode($databaseStructure, JSON_OBJECT_AS_ARRAY);
|
||||
$databaseStructure = unserialize(base64_decode($databaseStructure));
|
||||
|
||||
// get tables
|
||||
$defaultTables = array();
|
||||
|
@ -184,7 +184,7 @@ if($_REQUEST['action'] == 'db')
|
|||
{
|
||||
// read default structure
|
||||
include('../serverlib/database.struct.php');
|
||||
$databaseStructure = json_decode($databaseStructure, JSON_OBJECT_AS_ARRAY);
|
||||
$databaseStructure = unserialize(base64_decode($databaseStructure));
|
||||
$executedQueries = SyncDBStruct($databaseStructure);
|
||||
|
||||
// assign
|
||||
|
|
|
@ -19,335 +19,371 @@
|
|||
*
|
||||
*/
|
||||
|
||||
include '../serverlib/admin.inc.php';
|
||||
include('../serverlib/admin.inc.php');
|
||||
RequestPrivileges(PRIVILEGES_ADMIN);
|
||||
AdminRequirePrivilege('pluginsadmin');
|
||||
|
||||
if (!isset($_REQUEST['action'])) {
|
||||
$_REQUEST['action'] = 'plugins';
|
||||
}
|
||||
if(!isset($_REQUEST['action']))
|
||||
$_REQUEST['action'] = 'plugins';
|
||||
|
||||
$tabs = [
|
||||
0 => [
|
||||
'title' => $lang_admin['plugins'],
|
||||
'relIcon' => 'plugin32.png',
|
||||
'link' => 'plugins.php?',
|
||||
'active' => $_REQUEST['action'] == 'plugins',
|
||||
],
|
||||
1 => [
|
||||
'title' => $lang_admin['widgets'],
|
||||
'relIcon' => 'wlayout_add32.png',
|
||||
'link' => 'plugins.php?action=widgets&',
|
||||
'active' => $_REQUEST['action'] == 'widgets',
|
||||
],
|
||||
2 => [
|
||||
'title' => $lang_admin['updates'],
|
||||
'relIcon' => 'updates.png',
|
||||
'link' => 'plugins.php?action=updates&',
|
||||
'active' => $_REQUEST['action'] == 'updates',
|
||||
],
|
||||
3 => [
|
||||
'title' => $lang_admin['install'],
|
||||
'relIcon' => 'plugin_add.png',
|
||||
'link' => 'plugins.php?action=install&',
|
||||
'active' => $_REQUEST['action'] == 'install',
|
||||
],
|
||||
];
|
||||
$tabs = array(
|
||||
0 => array(
|
||||
'title' => $lang_admin['plugins'],
|
||||
'relIcon' => 'plugin32.png',
|
||||
'link' => 'plugins.php?',
|
||||
'active' => $_REQUEST['action'] == 'plugins'
|
||||
),
|
||||
1 => array(
|
||||
'title' => $lang_admin['widgets'],
|
||||
'relIcon' => 'wlayout_add32.png',
|
||||
'link' => 'plugins.php?action=widgets&',
|
||||
'active' => $_REQUEST['action'] == 'widgets'
|
||||
),
|
||||
2 => array(
|
||||
'title' => $lang_admin['updates'],
|
||||
'relIcon' => 'updates.png',
|
||||
'link' => 'plugins.php?action=updates&',
|
||||
'active' => $_REQUEST['action'] == 'updates'
|
||||
),
|
||||
3 => array(
|
||||
'title' => $lang_admin['install'],
|
||||
'relIcon' => 'plugin_add.png',
|
||||
'link' => 'plugins.php?action=install&',
|
||||
'active' => $_REQUEST['action'] == 'install'
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
/**
|
||||
* plugins/widgets
|
||||
*/
|
||||
if ($_REQUEST['action'] == 'plugins'
|
||||
|| $_REQUEST['action'] == 'widgets') {
|
||||
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'activatePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_inactivePlugins[$_REQUEST['plugin']])) {
|
||||
$plugins->activatePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
} elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'deactivatePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_plugins[$_REQUEST['plugin']])) {
|
||||
$plugins->deactivatePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
} elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'pausePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_plugins[$_REQUEST['plugin']])) {
|
||||
$plugins->pausePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
} elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'unpausePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_inactivePlugins[$_REQUEST['plugin']])) {
|
||||
$plugins->unpausePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
} elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'deletePackage'
|
||||
&& isset($_REQUEST['package']) && strlen($_REQUEST['package']) == 32) {
|
||||
BMPluginPackage::staticUninstall($_REQUEST['package']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
}
|
||||
if($_REQUEST['action'] == 'plugins'
|
||||
|| $_REQUEST['action'] == 'widgets')
|
||||
{
|
||||
if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'activatePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_inactivePlugins[$_REQUEST['plugin']]))
|
||||
{
|
||||
$plugins->activatePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
}
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'deactivatePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_plugins[$_REQUEST['plugin']]))
|
||||
{
|
||||
$plugins->deactivatePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
}
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'pausePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_plugins[$_REQUEST['plugin']]))
|
||||
{
|
||||
$plugins->pausePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
}
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'unpausePlugin'
|
||||
&& isset($_REQUEST['plugin']) && isset($plugins->_inactivePlugins[$_REQUEST['plugin']]))
|
||||
{
|
||||
$plugins->unpausePlugin($_REQUEST['plugin']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
}
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'deletePackage'
|
||||
&& isset($_REQUEST['package']) && strlen($_REQUEST['package']) == 32)
|
||||
{
|
||||
BMPluginPackage::Uninstall($_REQUEST['package']);
|
||||
$tpl->assign('reloadMenu', true);
|
||||
}
|
||||
|
||||
$pluginList = [];
|
||||
$pluginList = array();
|
||||
|
||||
// build plugin list
|
||||
foreach ($plugins->_plugins as $className => $pluginInfo) {
|
||||
if (($_REQUEST['action'] == 'plugins' && ($plugins->getParam('type', $className) == BMPLUGIN_DEFAULT
|
||||
|| $plugins->getParam('type', $className) == BMPLUGIN_FILTER))
|
||||
|| ($_REQUEST['action'] == 'widgets' && $plugins->getParam('type', $className) == BMPLUGIN_WIDGET)) {
|
||||
if (!isset($pluginList[$pluginInfo['signature']])) {
|
||||
$pluginList[$pluginInfo['signature']] = [
|
||||
'name' => $pluginInfo['packageName'],
|
||||
'plugins' => [],
|
||||
];
|
||||
}
|
||||
$pluginList[$pluginInfo['signature']]['plugins'][] = [
|
||||
'name' => $className,
|
||||
'title' => $plugins->getParam('name', $className),
|
||||
'description' => $plugins->getParam('description', $className),
|
||||
'version' => $plugins->getParam('version', $className),
|
||||
'author' => $plugins->getParam('author', $className),
|
||||
'type' => $pluginTypeTable[$plugins->getParam('type', $className)],
|
||||
'installed' => $plugins->getParam('installed', $className),
|
||||
'paused' => $plugins->getParam('paused', $className),
|
||||
];
|
||||
}
|
||||
}
|
||||
foreach ($plugins->_inactivePlugins as $className => $pluginInfo) {
|
||||
if (($_REQUEST['action'] == 'plugins' && ($pluginInfo['type'] == BMPLUGIN_DEFAULT
|
||||
|| $pluginInfo['type'] == BMPLUGIN_FILTER))
|
||||
|| ($_REQUEST['action'] == 'widgets' && $pluginInfo['type'] == BMPLUGIN_WIDGET)) {
|
||||
if (!isset($pluginList[$pluginInfo['signature']])) {
|
||||
$pluginList[$pluginInfo['signature']] = [
|
||||
'name' => $pluginInfo['packageName'],
|
||||
'plugins' => [],
|
||||
];
|
||||
}
|
||||
$pluginList[$pluginInfo['signature']]['plugins'][] = [
|
||||
'name' => $className,
|
||||
'title' => $pluginInfo['name'],
|
||||
'description' => $pluginInfo['description'],
|
||||
'version' => $pluginInfo['version'],
|
||||
'author' => $pluginInfo['author'],
|
||||
'type' => $pluginTypeTable[$pluginInfo['type']],
|
||||
'installed' => $pluginInfo['installed'],
|
||||
'paused' => $pluginInfo['paused'],
|
||||
];
|
||||
}
|
||||
}
|
||||
// build plugin list
|
||||
foreach($plugins->_plugins as $className=>$pluginInfo)
|
||||
{
|
||||
if(($_REQUEST['action'] == 'plugins' && ($plugins->getParam('type', $className) == BMPLUGIN_DEFAULT
|
||||
|| $plugins->getParam('type', $className) == BMPLUGIN_FILTER))
|
||||
|| ($_REQUEST['action'] == 'widgets' && $plugins->getParam('type', $className) == BMPLUGIN_WIDGET))
|
||||
{
|
||||
if(!isset($pluginList[$pluginInfo['signature']]))
|
||||
$pluginList[$pluginInfo['signature']] = array(
|
||||
'name' => $pluginInfo['packageName'],
|
||||
'plugins' => array()
|
||||
);
|
||||
$pluginList[$pluginInfo['signature']]['plugins'][] = array(
|
||||
'name' => $className,
|
||||
'title' => $plugins->getParam('name', $className),
|
||||
'version' => $plugins->getParam('version', $className),
|
||||
'author' => $plugins->getParam('author', $className),
|
||||
'type' => $pluginTypeTable[$plugins->getParam('type', $className)],
|
||||
'installed' => $plugins->getParam('installed', $className),
|
||||
'paused' => $plugins->getParam('paused', $className)
|
||||
);
|
||||
}
|
||||
}
|
||||
foreach($plugins->_inactivePlugins as $className=>$pluginInfo)
|
||||
{
|
||||
if(($_REQUEST['action'] == 'plugins' && ($pluginInfo['type'] == BMPLUGIN_DEFAULT
|
||||
|| $pluginInfo['type'] == BMPLUGIN_FILTER))
|
||||
|| ($_REQUEST['action'] == 'widgets' && $pluginInfo['type'] == BMPLUGIN_WIDGET))
|
||||
{
|
||||
if(!isset($pluginList[$pluginInfo['signature']]))
|
||||
$pluginList[$pluginInfo['signature']] = array(
|
||||
'name' => $pluginInfo['packageName'],
|
||||
'plugins' => array()
|
||||
);
|
||||
$pluginList[$pluginInfo['signature']]['plugins'][] = array(
|
||||
'name' => $className,
|
||||
'title' => $pluginInfo['name'],
|
||||
'version' => $pluginInfo['version'],
|
||||
'author' => $pluginInfo['author'],
|
||||
'type' => $pluginTypeTable[$pluginInfo['type']],
|
||||
'installed' => $pluginInfo['installed'],
|
||||
'paused' => $pluginInfo['paused']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function __PluginSort($a, $b)
|
||||
{
|
||||
return strcasecmp(($a['installed'] ? '0' : '1').$a['title'], ($b['installed'] ? '0' : '1').$b['title']);
|
||||
}
|
||||
function __PluginSort($a, $b)
|
||||
{
|
||||
return(strcasecmp(($a['installed'] ? '0' : '1') . $a['title'], ($b['installed'] ? '0' : '1') . $b['title']));
|
||||
}
|
||||
|
||||
function __PluginListSort($a, $b)
|
||||
{
|
||||
return strcasecmp($a['name'], $b['name']);
|
||||
}
|
||||
function __PluginListSort($a, $b)
|
||||
{
|
||||
return(strcasecmp($a['name'], $b['name']));
|
||||
}
|
||||
|
||||
foreach ($pluginList as $key => $val) {
|
||||
uasort($pluginList[$key]['plugins'], '__PluginSort');
|
||||
}
|
||||
foreach($pluginList as $key=>$val)
|
||||
uasort($pluginList[$key]['plugins'], '__PluginSort');
|
||||
|
||||
uasort($pluginList, '__PluginListSort');
|
||||
uasort($pluginList, '__PluginListSort');
|
||||
|
||||
$tpl->assign('action', $_REQUEST['action']);
|
||||
$tpl->assign('plugins', $pluginList);
|
||||
$tpl->assign('page', 'plugins.list.tpl');
|
||||
|
||||
$tpl->assign('action', $_REQUEST['action']);
|
||||
$tpl->assign('plugins', $pluginList);
|
||||
$tpl->assign('page', 'plugins.list.tpl');
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* update check page
|
||||
*/
|
||||
elseif ($_REQUEST['action'] == 'updates') {
|
||||
$pluginList = [];
|
||||
else if($_REQUEST['action'] == 'updates')
|
||||
{
|
||||
$pluginList = array();
|
||||
|
||||
// build plugin list
|
||||
foreach ($plugins->_plugins as $className => $pluginInfo) {
|
||||
if (!isset($pluginList[$pluginInfo['signature']])) {
|
||||
$pluginList[$pluginInfo['signature']] = [
|
||||
'name' => $pluginInfo['packageName'],
|
||||
'plugins' => [],
|
||||
];
|
||||
}
|
||||
$pluginList[$pluginInfo['signature']]['plugins'][] = [
|
||||
'name' => $className,
|
||||
'title' => $plugins->getParam('name', $className),
|
||||
'description' => $plugins->getParam('description', $className),
|
||||
'version' => $plugins->getParam('version', $className),
|
||||
'author' => $plugins->getParam('author', $className),
|
||||
'website' => $plugins->getParam('website', $className),
|
||||
'type' => $pluginTypeTable[$plugins->getParam('type', $className)],
|
||||
'installed' => true,
|
||||
];
|
||||
}
|
||||
// build plugin list
|
||||
foreach($plugins->_plugins as $className=>$pluginInfo)
|
||||
{
|
||||
if(!isset($pluginList[$pluginInfo['signature']]))
|
||||
$pluginList[$pluginInfo['signature']] = array(
|
||||
'name' => $pluginInfo['packageName'],
|
||||
'plugins' => array()
|
||||
);
|
||||
$pluginList[$pluginInfo['signature']]['plugins'][] = array(
|
||||
'name' => $className,
|
||||
'title' => $plugins->getParam('name', $className),
|
||||
'version' => $plugins->getParam('version', $className),
|
||||
'author' => $plugins->getParam('author', $className),
|
||||
'website' => $plugins->getParam('website', $className),
|
||||
'type' => $pluginTypeTable[$plugins->getParam('type', $className)],
|
||||
'installed' => true
|
||||
);
|
||||
}
|
||||
|
||||
$tpl->assign('plugins', $pluginList);
|
||||
$tpl->assign('page', 'plugins.updates.tpl');
|
||||
$tpl->assign('plugins', $pluginList);
|
||||
$tpl->assign('page', 'plugins.updates.tpl');
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* perform update check
|
||||
*/
|
||||
elseif ($_REQUEST['action'] == 'updateCheck'
|
||||
&& isset($_REQUEST['plugin'])) {
|
||||
$latestVersion = '';
|
||||
$resultCode = $plugins->callFunction('CheckForUpdates', $_REQUEST['plugin'], false, [&$latestVersion]);
|
||||
else if($_REQUEST['action'] == 'updateCheck'
|
||||
&& isset($_REQUEST['plugin']))
|
||||
{
|
||||
$latestVersion = '';
|
||||
$resultCode = $plugins->callFunction('CheckForUpdates', $_REQUEST['plugin'], false, array(&$latestVersion));
|
||||
|
||||
printf('%s;%d;%s;%s',
|
||||
$_REQUEST['plugin'],
|
||||
$resultCode,
|
||||
$latestVersion,
|
||||
$plugins->getParam('website', $_REQUEST['plugin']));
|
||||
exit();
|
||||
printf('%s;%d;%s;%s',
|
||||
$_REQUEST['plugin'],
|
||||
$resultCode,
|
||||
$latestVersion,
|
||||
$plugins->getParam('website', $_REQUEST['plugin']));
|
||||
exit();
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* install
|
||||
*/
|
||||
elseif ($_REQUEST['action'] == 'install') {
|
||||
//
|
||||
// form
|
||||
//
|
||||
if (!isset($_REQUEST['do'])) {
|
||||
$tpl->assign('page', 'plugins.install.tpl');
|
||||
}
|
||||
else if($_REQUEST['action'] == 'install')
|
||||
{
|
||||
//
|
||||
// form
|
||||
//
|
||||
if(!isset($_REQUEST['do']))
|
||||
{
|
||||
$tpl->assign('page', 'plugins.install.tpl');
|
||||
}
|
||||
|
||||
//
|
||||
// upload
|
||||
//
|
||||
elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'uploadPlugin') {
|
||||
$formatError = true;
|
||||
//
|
||||
// upload
|
||||
//
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'uploadPlugin')
|
||||
{
|
||||
$formatError = true;
|
||||
|
||||
if (isset($_FILES['package']) && $_FILES['package']['error'] == 0
|
||||
&& $_FILES['package']['size'] > 0) {
|
||||
// request temp file
|
||||
$tempFileID = RequestTempFile(0);
|
||||
$tempFileName = TempFileName($tempFileID);
|
||||
if(isset($_FILES['package']) && $_FILES['package']['error'] == 0
|
||||
&& $_FILES['package']['size'] > 0)
|
||||
{
|
||||
// request temp file
|
||||
$tempFileID = RequestTempFile(0);
|
||||
$tempFileName = TempFileName($tempFileID);
|
||||
|
||||
// move file
|
||||
$fileName = $_FILES['package']['name'];
|
||||
move_uploaded_file($_FILES['package']['tmp_name'], $tempFileName);
|
||||
// move file
|
||||
$fileName = $_FILES['package']['name'];
|
||||
move_uploaded_file($_FILES['package']['tmp_name'], $tempFileName);
|
||||
|
||||
// open file
|
||||
$package = _new('BMPluginPackage', [$fp = fopen($tempFileName, 'rb')]);
|
||||
if ($package->ParseFile()) {
|
||||
$meta = $package->metaInfo;
|
||||
// open file
|
||||
$package = _new('BMPluginPackage', array($fp = fopen($tempFileName, 'rb')));
|
||||
if($package->ParseFile())
|
||||
{
|
||||
$meta = $package->metaInfo;
|
||||
|
||||
foreach ($meta as $key => $val) {
|
||||
if (is_string($val)) {
|
||||
$meta[$key] = CharsetDecode($val, FALLBACK_CHARSET);
|
||||
}
|
||||
}
|
||||
foreach($meta as $key=>$val)
|
||||
if(is_string($val))
|
||||
$meta[$key] = CharsetDecode($val, FALLBACK_CHARSET);
|
||||
|
||||
$formatError = false;
|
||||
$tpl->assign('id', $tempFileID);
|
||||
$tpl->assign('meta', $meta);
|
||||
$tpl->assign('signature', $package->signature);
|
||||
$tpl->assign('versionsMatch', $package->metaInfo['for_b1gmail'] == B1GMAIL_VERSION);
|
||||
$tpl->assign('b1gmailVersion', B1GMAIL_VERSION);
|
||||
$tpl->assign('page', 'plugin.install.info.tpl');
|
||||
}
|
||||
$formatError = false;
|
||||
$tpl->assign('id', $tempFileID);
|
||||
$tpl->assign('meta', $meta);
|
||||
$tpl->assign('signature', $package->signature);
|
||||
$tpl->assign('versionsMatch', $package->metaInfo['for_b1gmail'] == B1GMAIL_VERSION);
|
||||
$tpl->assign('b1gmailVersion', B1GMAIL_VERSION);
|
||||
$tpl->assign('page', 'plugin.install.info.tpl');
|
||||
}
|
||||
|
||||
// close file
|
||||
fclose($fp);
|
||||
}
|
||||
// close file
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
// invalid file => message
|
||||
if ($formatError) {
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_formaterr']);
|
||||
$tpl->assign('msgIcon', 'error32');
|
||||
$tpl->assign('backLink', 'plugins.php?action=install&');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
}
|
||||
}
|
||||
// invalid file => message
|
||||
if($formatError)
|
||||
{
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_formaterr']);
|
||||
$tpl->assign('msgIcon', 'error32');
|
||||
$tpl->assign('backLink', 'plugins.php?action=install&');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// check signature
|
||||
//
|
||||
elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'checkSignature'
|
||||
&& isset($_REQUEST['signature']) && strlen($_REQUEST['signature']) == 32) {
|
||||
$result = BMPluginPackage::VerifySignature($_REQUEST['signature']);
|
||||
//
|
||||
// check signature
|
||||
//
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'checkSignature'
|
||||
&& isset($_REQUEST['signature']) && strlen($_REQUEST['signature']) == 32)
|
||||
{
|
||||
$result = BMPluginPackage::VerifySignature($_REQUEST['signature']);
|
||||
|
||||
if ($result === false) {
|
||||
$tpl->assign('icon', 'error32');
|
||||
$tpl->assign('title', $lang_admin['sigfailed']);
|
||||
$tpl->assign('text', $lang_admin['sigfailed_desc']);
|
||||
} elseif ($result == SIGNATURE_OFFICIAL) {
|
||||
$tpl->assign('icon', 'sig_ok');
|
||||
$tpl->assign('title', $lang_admin['sigofficial']);
|
||||
$tpl->assign('text', $lang_admin['sigofficial_desc']);
|
||||
} elseif ($result == SIGNATURE_VERIFIED) {
|
||||
$tpl->assign('icon', 'sig');
|
||||
$tpl->assign('title', $lang_admin['sigver']);
|
||||
$tpl->assign('text', $lang_admin['sigver_desc']);
|
||||
} elseif ($result == SIGNATURE_UNKNOWN) {
|
||||
$tpl->assign('icon', 'sig_unknown');
|
||||
$tpl->assign('title', $lang_admin['sigunknown']);
|
||||
$tpl->assign('text', $lang_admin['sigunknown_desc']);
|
||||
} elseif ($result == SIGNATURE_MALICIOUS) {
|
||||
$tpl->assign('icon', 'sig_mal');
|
||||
$tpl->assign('title', $lang_admin['sigmal']);
|
||||
$tpl->assign('text', $lang_admin['sigmal_desc']);
|
||||
}
|
||||
if($result === false)
|
||||
{
|
||||
$tpl->assign('icon', 'error32');
|
||||
$tpl->assign('title', $lang_admin['sigfailed']);
|
||||
$tpl->assign('text', $lang_admin['sigfailed_desc']);
|
||||
}
|
||||
else if($result == SIGNATURE_OFFICIAL)
|
||||
{
|
||||
$tpl->assign('icon', 'sig_ok');
|
||||
$tpl->assign('title', $lang_admin['sigofficial']);
|
||||
$tpl->assign('text', $lang_admin['sigofficial_desc']);
|
||||
}
|
||||
else if($result == SIGNATURE_VERIFIED)
|
||||
{
|
||||
$tpl->assign('icon', 'sig');
|
||||
$tpl->assign('title', $lang_admin['sigver']);
|
||||
$tpl->assign('text', $lang_admin['sigver_desc']);
|
||||
}
|
||||
else if($result == SIGNATURE_UNKNOWN)
|
||||
{
|
||||
$tpl->assign('icon', 'sig_unknown');
|
||||
$tpl->assign('title', $lang_admin['sigunknown']);
|
||||
$tpl->assign('text', $lang_admin['sigunknown_desc']);
|
||||
}
|
||||
else if($result == SIGNATURE_MALICIOUS)
|
||||
{
|
||||
$tpl->assign('icon', 'sig_mal');
|
||||
$tpl->assign('title', $lang_admin['sigmal']);
|
||||
$tpl->assign('text', $lang_admin['sigmal_desc']);
|
||||
}
|
||||
|
||||
$tpl->display('plugin.install.signature.tpl');
|
||||
exit();
|
||||
}
|
||||
$tpl->display('plugin.install.signature.tpl');
|
||||
exit();
|
||||
}
|
||||
|
||||
//
|
||||
// install
|
||||
//
|
||||
elseif (isset($_REQUEST['do']) && $_REQUEST['do'] == 'installPlugin'
|
||||
&& isset($_REQUEST['id']) && ValidTempFile(0, (int) $_REQUEST['id'])) {
|
||||
if (isset($_REQUEST['step'])) {
|
||||
$step = max(1, min(2, (int) $_REQUEST['step']));
|
||||
} else {
|
||||
$step = 1;
|
||||
}
|
||||
//
|
||||
// install
|
||||
//
|
||||
else if(isset($_REQUEST['do']) && $_REQUEST['do'] == 'installPlugin'
|
||||
&& isset($_REQUEST['id']) && ValidTempFile(0, (int)$_REQUEST['id']))
|
||||
{
|
||||
if(isset($_REQUEST['step']))
|
||||
$step = max(1, min(2, (int)$_REQUEST['step']));
|
||||
else
|
||||
$step = 1;
|
||||
|
||||
$id = (int) $_REQUEST['id'];
|
||||
$tempFileName = TempFileName($id);
|
||||
$id = (int)$_REQUEST['id'];
|
||||
$tempFileName = TempFileName($id);
|
||||
|
||||
// open file
|
||||
$package = _new('BMPluginPackage', [$fp = fopen($tempFileName, 'rb')]);
|
||||
if ($package->ParseFile()) {
|
||||
if ($step == 1) {
|
||||
if ($package->InstallStep1()) {
|
||||
$url = sprintf('plugins.php?action=install&do=installPlugin&id=%d&step=2&sid=%s',
|
||||
$id,
|
||||
session_id());
|
||||
header('Location: '.$url);
|
||||
fclose($fp);
|
||||
exit();
|
||||
} else {
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_insterr']);
|
||||
$tpl->assign('msgIcon', 'error32');
|
||||
$tpl->assign('backLink', 'plugins.php?action=install&');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
fclose($fp);
|
||||
ReleaseTempFile(0, $id);
|
||||
}
|
||||
} elseif ($step == 2) {
|
||||
if ($package->InstallStep2()) {
|
||||
$tpl->assign('reloadMenu', true);
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_installed']);
|
||||
$tpl->assign('msgIcon', 'info32');
|
||||
$tpl->assign('backLink', 'plugins.php?');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
} else {
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_insterr']);
|
||||
$tpl->assign('msgIcon', 'error32');
|
||||
$tpl->assign('backLink', 'plugins.php?action=install&');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
}
|
||||
// open file
|
||||
$package = _new('BMPluginPackage', array($fp = fopen($tempFileName, 'rb')));
|
||||
if($package->ParseFile())
|
||||
{
|
||||
if($step == 1)
|
||||
{
|
||||
if($package->InstallStep1())
|
||||
{
|
||||
$url = sprintf('plugins.php?action=install&do=installPlugin&id=%d&step=2&sid=%s',
|
||||
$id,
|
||||
session_id());
|
||||
header('Location: ' . $url);
|
||||
fclose($fp);
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_insterr']);
|
||||
$tpl->assign('msgIcon', 'error32');
|
||||
$tpl->assign('backLink', 'plugins.php?action=install&');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
fclose($fp);
|
||||
ReleaseTempFile(0, $id);
|
||||
}
|
||||
}
|
||||
|
||||
// close and release file
|
||||
fclose($fp);
|
||||
ReleaseTempFile(0, $id);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if($step == 2)
|
||||
{
|
||||
if($package->InstallStep2())
|
||||
{
|
||||
$tpl->assign('reloadMenu', true);
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_installed']);
|
||||
$tpl->assign('msgIcon', 'info32');
|
||||
$tpl->assign('backLink', 'plugins.php?');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
}
|
||||
else
|
||||
{
|
||||
$tpl->assign('msgTitle', $lang_admin['install']);
|
||||
$tpl->assign('msgText', $lang_admin['plugin_insterr']);
|
||||
$tpl->assign('msgIcon', 'error32');
|
||||
$tpl->assign('backLink', 'plugins.php?action=install&');
|
||||
$tpl->assign('page', 'msg.tpl');
|
||||
}
|
||||
|
||||
// close and release file
|
||||
fclose($fp);
|
||||
ReleaseTempFile(0, $id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$tpl->assign('tabs', $tabs);
|
||||
$tpl->assign('title', $lang_admin['plugins'].' » '.$lang_admin['plugins']);
|
||||
$tpl->assign('title', $lang_admin['plugins'] . ' » ' . $lang_admin['plugins']);
|
||||
$tpl->display('page.tpl');
|
||||
?>
|
|
@ -192,12 +192,7 @@ else if($_REQUEST['action'] == 'caching')
|
|||
|
||||
// assign
|
||||
$bm_prefs['memcache_servers'] = str_replace(';', "\n", $bm_prefs['memcache_servers']);
|
||||
if((int)str_replace('.', '', phpversion()) >= 800) { // In PHP 8 we will disable memcached
|
||||
$tpl->assign('memcache', false);
|
||||
}
|
||||
else {
|
||||
$tpl->assign('memcache', class_exists('Memcache') || class_exists('Memcached'));
|
||||
}
|
||||
$tpl->assign('memcache', class_exists('Memcache') || class_exists('Memcached'));
|
||||
$tpl->assign('page', 'prefs.caching.tpl');
|
||||
}
|
||||
|
||||
|
|
|
@ -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="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
|
||||
<input type="text" style="width:85%;" name="prefs[{$groupName}][{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -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="{if isset($admin.username)}{text value=$admin.username}{/if}" /></td>
|
||||
<td class="td2"><input type="text" size="28" id="username" name="username" value="{text value=$admin.username}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="firstname"}:</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>
|
||||
<td class="td2"><input type="text" size="36" id="firstname" name="firstname" value="{text value=$admin.firstname allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="lastname"}:</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>
|
||||
<td class="td2"><input type="text" size="36" id="lastname" name="lastname" value="{text value=$admin.lastname allowEmpty=true}" /></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 isset($admin.perms.$permName) && $admin.perms.$permName} checked="checked"{/if} />
|
||||
<input type="checkbox" name="perms[{$permName}]" value="1" id="perm_{$permName}"{if $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 isset($admin.perms.plugins.$pluginName) && $admin.perms.plugins.$pluginName} checked="checked"{/if} />
|
||||
<input type="checkbox" name="perms[plugins][{$pluginName}]" value="1" id="plugin_{$pluginName}"{if $admin.perms.plugins.$pluginName} checked="checked"{/if} />
|
||||
<label for="plugin_{$pluginName}" style="font-weight:bold;">{text value=$pluginTitle}</label><br />
|
||||
{/foreach}
|
||||
</td>
|
||||
|
|
|
@ -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="{if isset($group.titel)}{text value=$group.titel allowEmpty=true}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="titel" value="{text value=$group.titel allowEmpty=true}" 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="{if isset($group.sms_from)}{text value=$group.sms_from allowEmpty=true}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="sms_from" value="{text value=$group.sms_from allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="smssig"}:</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>
|
||||
<td class="td2"><input type="text" name="sms_sig" value="{text value=$group.sms_sig allowEmpty=true}" 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="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
|
||||
<input type="text" style="width:85%;" name="{$fieldKey}" value="{text value=$fieldInfo.value allowEmpty=true}" />
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
<body onload="EBID('username').focus();" id="loginBody">
|
||||
|
||||
<form action="index.php?action=login" method="post" autocomplete="off">
|
||||
{if isset($jump)}<input type="hidden" id="jump" name="jump" value="{text value=$jump allowEmpty=true}" />{/if}
|
||||
{if $jump}<input type="hidden" id="jump" name="jump" value="{text value=$jump allowEmpty=true}" />{/if}
|
||||
<input type="hidden" name="timezone" id="timezone" value="{$timezone}" />
|
||||
|
||||
<div id="loginBox1">
|
||||
<div id="loginBox2">
|
||||
<div id="loginBox3">
|
||||
{if isset($error)}<div class="loginError">{$error}</div>{/if}
|
||||
{if $error}<div class="loginError">{$error}</div>{/if}
|
||||
|
||||
<div id="loginLogo">
|
||||
<img src="templates/images/logo_letter.png" style="width:90px;height:53px;" border="0" alt="" />
|
||||
|
|
|
@ -46,26 +46,26 @@
|
|||
<tr>
|
||||
<td class="td1">{lng p="priority"}:</td>
|
||||
<td class="td2">
|
||||
<input type="checkbox"{if isset($prio[8])} checked="checked"{/if} name="prio[8]" id="prio8" />
|
||||
<input type="checkbox"{if $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>
|
||||
|
||||
<input type="checkbox"{if isset($prio[2])} checked="checked"{/if} name="prio[2]" id="prio2" />
|
||||
<input type="checkbox"{if $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>
|
||||
|
||||
<input type="checkbox"{if isset($prio[1])} checked="checked"{/if} name="prio[1]" id="prio1" />
|
||||
<input type="checkbox"{if $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>
|
||||
|
||||
<input type="checkbox"{if isset($prio[4])} checked="checked"{/if} name="prio[4]" id="prio4" />
|
||||
<input type="checkbox"{if $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>
|
||||
|
||||
<input type="checkbox"{if isset($prio[16])} checked="checked"{/if} name="prio[16]" id="prio16" />
|
||||
<input type="checkbox"{if $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="{if isset($q)}{text value=$q allowEmpty=true}{/if}" size="36" style="width:85%;" />
|
||||
<input type="text" name="q" value="{text value=$q allowEmpty=true}" size="36" style="width:85%;" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -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="{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}
|
||||
{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}
|
||||
|
||||
<fieldset>
|
||||
<legend>{lng p="inactiveusers"}</legend>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<fieldset>
|
||||
<legend>{$msgTitle}</legend>
|
||||
|
||||
{if !empty($msgIcon)}
|
||||
{if $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 !empty($backLink)}
|
||||
{if $backLink}
|
||||
<p align="right">
|
||||
<input class="button" type="button" onclick="document.location.href='{$backLink}sid={$sid}';" value=" {lng p="back"} " />
|
||||
</p>
|
||||
|
@ -23,8 +23,10 @@
|
|||
{/if}
|
||||
</fieldset>
|
||||
|
||||
{if isset($reloadMenu) && $reloadMenu}
|
||||
{if $reloadMenu}
|
||||
<script>
|
||||
<!--
|
||||
parent.frames['menu'].location.href = 'main.php?action=menu&item=4&sid={$sid}';
|
||||
//-->
|
||||
</script>
|
||||
{/if}
|
||||
{/if}
|
||||
|
|
|
@ -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="{if isset($tpl.title)}{text value=$tpl.title allowEmpty=true}{/if}" size="42" /></td>
|
||||
<td class="td2"><input type="text" id="subject" name="title" value="{text value=$tpl.title allowEmpty=true}" 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="{if isset($tpl.from)}{text value=$tpl.from allowEmpty=true}{/if}" size="42" /></td>
|
||||
<td class="td2"><input type="text" id="from" name="from" value="{text value=$tpl.from allowEmpty=true}" size="42" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="subject"}:</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>
|
||||
<td class="td2"><input type="text" id="subject" name="subject" value="{text value=$tpl.subject allowEmpty=true}" size="42" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="priority"}:</td>
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="from"}:</td>
|
||||
<td class="td2"><input type="text" id="from" name="from" value="{if isset($from)}{text value=$from}{/if}" size="42" /></td>
|
||||
<td class="td2"><input type="text" id="from" name="from" value="{text value=$from}" size="42" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="subject"}:</td>
|
||||
|
|
|
@ -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 !isset($smarty.get.toGroup) || !$smarty.get.toGroup || $smarty.get.toGroup==$groupID} checked="checked"{/if} onclick="determineNewsletterRecipients()" />
|
||||
<input type="checkbox" name="group_{$groupID}" id="group_{$groupID}"{if !$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="{if isset($from)}{text value=$from}{/if}" size="42" /></td>
|
||||
<td class="td2"><input type="text" id="from" name="from" value="{text value=$from}" size="42" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="subject"}:</td>
|
||||
|
@ -93,12 +93,14 @@
|
|||
<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 src="../clientlib/ckeditor/ckeditor.js?{fileDateSig file="../../clientlib/ckeditor/ckeditor.js"}"></script>
|
||||
<script type="text/javascript" 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>
|
||||
|
@ -134,6 +136,8 @@
|
|||
</form>
|
||||
|
||||
<script>
|
||||
<!--
|
||||
var newsletterMode = 'export';
|
||||
registerLoadAction('determineNewsletterRecipients()');
|
||||
</script>
|
||||
//-->
|
||||
</script>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<fieldset>
|
||||
<legend>{lng p="db"}</legend>
|
||||
|
||||
{if isset($execute)}
|
||||
{if $execute}
|
||||
<table class="list">
|
||||
<tr>
|
||||
<th> </th>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
<li><a href="prefs.countries.php?sid={$sid}"><img src="./templates/images/country.png" />{lng p="countries"}</a></li>
|
||||
<li><a href="prefs.widgetlayouts.php?sid={$sid}"><img src="./templates/images/wlayout_add.png" />{lng p="widgetlayouts"}</a></li>
|
||||
<li><a href="prefs.payments.php?sid={$sid}"><img src="./templates/images/ico_prefs_payments.png" />{lng p="payments"}</a></li>
|
||||
{if !empty($toolbox_serverurl)}<li><a href="toolbox.php?sid={$sid}"><img src="./templates/images/toolbox.png" />{lng p="toolbox"}</a></li>{/if}
|
||||
{if $toolbox_serverurl!=''}<li><a href="toolbox.php?sid={$sid}"><img src="./templates/images/toolbox.png" />{lng p="toolbox"}</a></li>{/if}
|
||||
</ul>
|
||||
</li>
|
||||
{/if}
|
||||
|
@ -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||isset($adminRow.privileges.plugins.$plugin)}
|
||||
{if $adminRow.type==0||$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 !empty($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 $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>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
</table>
|
||||
</fieldset>
|
||||
|
||||
{if isset($reloadMenu)}
|
||||
{if $reloadMenu}
|
||||
<script>
|
||||
<!--
|
||||
parent.frames['menu'].location.href = 'main.php?action=menu&item=4&sid={$sid}';
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<td>{$prefDetails.title}</td>
|
||||
<td>
|
||||
{if $prefDetails.type==1}
|
||||
<input type="text" name="types[{$apTypeID}][prefs][{$prefKey}]" value="{if isset($prefDetails.value)}{text value=$prefDetails.value}{/if}" style="width:100px;" class="smallInput" />
|
||||
<input type="text" name="types[{$apTypeID}][prefs][{$prefKey}]" value="{text value=$prefDetails.value}" style="width:100px;" class="smallInput" />
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -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="{if isset($ad.category)}{text value=$ad.category allowEmpty=true}{/if}" /></td>
|
||||
<td class="td2"><input type="text" name="category" size="36" value="{text value=$ad.category allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1" width="160">{lng p="weight"}:</td>
|
||||
|
|
|
@ -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="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
|
||||
<input type="text" style="width:85%;" name="prefs[{$key}][{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -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="{if isset($bm_prefs.logs_autodelete_days)}{text value=$bm_prefs.logs_autodelete_days}{/if}" size="4" min="1" step="1" />
|
||||
<input type="number" name="logs_autodelete_days" value="{text value=$bm_prefs.logs_autodelete_days}" 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>
|
||||
|
|
|
@ -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="{if isset($coupon.code)}{text value=$coupon.code}{/if}" style="width:85%;" />
|
||||
<input type="text" name="code" value="{text value=$coupon.code}" 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="{if isset($coupon.anzahl)}{text value=$coupon.anzahl}{/if}" onkeyup="EBID('count_unlim').checked=this.value=='-1';" />
|
||||
<input type="text" size="6" name="anzahl" id="count" value="{text value=$coupon.anzahl}" onkeyup="EBID('count_unlim').checked=this.value=='-1';" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -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="{if isset($domain.pos)}{text value=$domain.pos allowEmpty=true}{/if}" size="6" /></td>
|
||||
<td><input type="text" name="domains[{$domain.domain}][pos]" value="{text value=$domain.pos allowEmpty=true}" 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>
|
||||
|
|
|
@ -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 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])}
|
||||
{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]}
|
||||
</div>
|
||||
<script>
|
||||
<!--
|
||||
|
|
|
@ -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="{if isset($bm_prefs.pay_notification_to)}{text value=$bm_prefs.pay_notification_to allowEmpty=true}{/if}" 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="{text value=$bm_prefs.pay_notification_to allowEmpty=true}" size="24" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="sysmailsender"}:</td>
|
||||
<td class="td2">
|
||||
"<input type="text" name="pay_emailfrom" value="{if isset($bm_prefs.pay_emailfrom)}{text value=$bm_prefs.pay_emailfrom allowEmpty=true}{/if}" size="14" />"
|
||||
"<input type="text" name="pay_emailfrom" value="{text value=$bm_prefs.pay_emailfrom allowEmpty=true}" size="14" />"
|
||||
<<input type="text" name="pay_emailfromemail" value="{email value=$bm_prefs.pay_emailfromemail}" size="22" />>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -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="{if isset($row.title)}{text value=$row.title allowEmpty=true}{/if}" /></td>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="title" value="{text value=$row.title allowEmpty=true}" /></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="{if isset($field.title)}{text value=$field.title allowEmpty=true}{/if}" /></td>
|
||||
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][title]" value="{text value=$field.title allowEmpty=true}" /></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="{if isset($field.options)}{text value=$field.options allowEmpty=true}{/if}" /></td>
|
||||
<td><input type="text" style="width: 90%;" name="fields[{$fieldID}][options]" value="{text value=$field.options allowEmpty=true}" /></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="{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><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 style="text-align:center;"><input type="checkbox" name="fields[{$fieldID}][delete]" /></td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
|
|
@ -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="{if isset($field.feld)}{text value=$field.feld allowEmpty=true}{/if}" /></td>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="feld" value="{text value=$field.feld allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="validityrule"}:</td>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="rule" value="{if isset($field.rule)}{text value=$field.rule allowEmpty=true}{/if}" />
|
||||
<td class="td2"><input type="text" style="width:85%;" name="rule" value="{text value=$field.rule allowEmpty=true}" />
|
||||
<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="{if isset($field.extra)}{text value=$field.extra allowEmpty=true}{/if}" />
|
||||
<td class="td2"><input type="text" style="width:85%;" name="extra" value="{text value=$field.extra allowEmpty=true}" />
|
||||
<br /><small>{lng p="optionsdesc"}</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -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="{if isset($rule.field)}{text value=$rule.field}{/if}" /></td>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="field" value="{text value=$rule.field}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="expression"}:</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>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="expression" value="{text value=$rule.expression allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="action"}:</td>
|
||||
|
|
|
@ -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="{if isset($gateway.titel)}{text value=$gateway.titel}{/if}" /></td>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="titel" value="{text value=$gateway.titel}" /></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="{if isset($gateway.success)}{text value=$gateway.success allowEmpty=true}{/if}" /></td>
|
||||
<td class="td2"><input type="text" size="10" name="success" value="{text value=$gateway.success allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="user"}:</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>
|
||||
<td class="td2"><input type="text" size="36" id="user" name="user" value="{text value=$gateway.user allowEmpty=true}" /></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="{if isset($gateway.pass)}{text value=$gateway.pass allowEmpty=true}{/if}" /></td>
|
||||
<td class="td2"><input type="password" autocomplete="off" size="36" id="pass" name="pass" value="{text value=$gateway.pass allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
|
|
@ -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="{if isset($type.titel)}{text value=$type.titel}{/if}" /></td>
|
||||
<td class="td2"><input type="text" style="width:85%;" name="titel" value="{text value=$type.titel}" /></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="{if isset($type.typ)}{text value=$type.typ allowEmpty=true}{/if}" /></td>
|
||||
<td class="td2"><input type="text" size="6" name="typ" value="{text value=$type.typ allowEmpty=true}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="price"}:</td>
|
||||
|
|
|
@ -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="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
|
||||
<input type="text" style="width:85%;" name="prefs[{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
{/foreach}
|
||||
</div>
|
||||
|
||||
<script src="../clientlib/dragcontainer.js?{fileDateSig file="../../clientlib/dragcontainer.js"}" type="text/javascript"></script>
|
||||
<script src="../clientlib/dragcontainer.js" type="text/javascript"></script>
|
||||
<script>
|
||||
<!--
|
||||
var dc = new dragContainer('dashboard', 3, 'dc');
|
||||
|
|
|
@ -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="{if isset($fieldInfo.value)}{text value=$fieldInfo.value allowEmpty=true}{/if}" />
|
||||
<input type="text" style="width:85%;" name="prefs[{$groupName}][{$fieldKey}]" value="{text value=$fieldInfo.value allowEmpty=true}" />
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<table width="100%">
|
||||
<tr>
|
||||
<td class="td1" width="115">{lng p="email"}:</td>
|
||||
<td class="td2"><input type="text" name="email" value="{if isset($user.email)}{text value=$user.email allowEmpty=true}{/if}" style="width:40%;" />
|
||||
<td class="td2"><input type="text" name="email" value="{text value=$user.email allowEmpty=true}" style="width:40%;" />
|
||||
<select name="emailDomain">
|
||||
{foreach from=$domainList item=domain}
|
||||
<option value="{$domain}">@{domain value=$domain}</option>
|
||||
|
@ -25,21 +25,21 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="firstname"}:</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>
|
||||
<td class="td2"><input type="text" name="vorname" value="{text value=$user.vorname allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="lastname"}:</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>
|
||||
<td class="td2"><input type="text" name="nachname" value="{text value=$user.nachname allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="streetno"}:</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>
|
||||
<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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="zipcity"}:</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>
|
||||
<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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="country"}:</td>
|
||||
|
@ -51,19 +51,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="tel"}:</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>
|
||||
<td class="td2"><input type="text" name="tel" value="{text value=$user.tel allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="fax"}:</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>
|
||||
<td class="td2"><input type="text" name="fax" value="{text value=$user.fax allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="cellphone"}:</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>
|
||||
<td class="td2"><input type="text" name="mail2sms_nummer" value="{text value=$user.mail2sms_nummer allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="altmail"}:</td>
|
||||
<td class="td2"><input type="text" name="altmail" value="{if isset($user.altmail)}{text value=$user.altmail allowEmpty=true}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="altmail" value="{text value=$user.altmail allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
|
||||
{foreach from=$profileFields item=profileField}
|
||||
|
@ -72,9 +72,9 @@
|
|||
<td class="td1">{$profileField.title}:</td>
|
||||
<td class="td2">
|
||||
{if $profileField.type==1}
|
||||
<input type="text" name="field_{$profileField.id}" value="{if isset($profileField.value)}{text value=$profileField.value allowEmpty=true}{/if}" style="width:85%;" />
|
||||
<input type="text" name="field_{$profileField.id}" value="{text value=$profileField.value allowEmpty=true}" style="width:85%;" />
|
||||
{elseif $profileField.type==2}
|
||||
<input type="checkbox" name="field_{$profileField.id}"{if isset($profileField.value)} checked="checked"{/if} />
|
||||
<input type="checkbox" name="field_{$profileField.id}"{if $profileField.value} checked="checked"{/if} />
|
||||
{elseif $profileField.type==4}
|
||||
<select name="field_{$profileField.id}">
|
||||
{foreach from=$profileField.extra item=item}
|
||||
|
@ -112,10 +112,10 @@
|
|||
<tr>
|
||||
<td class="td1">{lng p="status"}:</td>
|
||||
<td class="td2"><select name="gesperrt">
|
||||
<option value="no"{if isset($user.gesperrt) && $user.gesperrt=='no'} selected="selected"{/if}>{lng p="active"}</option>
|
||||
<option value="yes"{if isset($user.gesperrt) && $user.gesperrt=='yes'} selected="selected"{/if}>{lng p="locked"}</option>
|
||||
<option value="locked"{if isset($user.gesperrt) && $user.gesperrt=='locked'} selected="selected"{/if}>{lng p="notactivated"}</option>
|
||||
<option value="delete"{if isset($user.gesperrt) && $user.gesperrt=='delete'} selected="selected"{/if}>{lng p="deleted"}</option>
|
||||
<option value="no"{if $user.gesperrt=='no'} selected="selected"{/if}>{lng p="active"}</option>
|
||||
<option value="yes"{if $user.gesperrt=='yes'} selected="selected"{/if}>{lng p="locked"}</option>
|
||||
<option value="locked"{if $user.gesperrt=='locked'} selected="selected"{/if}>{lng p="notactivated"}</option>
|
||||
<option value="delete"{if $user.gesperrt=='delete'} selected="selected"{/if}>{lng p="deleted"}</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -127,7 +127,7 @@
|
|||
|
||||
<fieldset>
|
||||
<legend>{lng p="notes"}</legend>
|
||||
<textarea style="width:100%;height:80px;" name="notes">{if isset($user.notes)}{text value=$user.notes allowEmpty=true}{/if}</textarea>
|
||||
<textarea style="width:100%;height:80px;" name="notes">{text value=$user.notes allowEmpty=true}</textarea>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<form method="post" action="users.php?do=edit&id={$user.id}&save=true&sid={$sid}" onsubmit="spin(this)">
|
||||
|
||||
{if !empty($msg)}
|
||||
{if $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="{if isset($user.vorname)}{text value=$user.vorname allowEmpty=true}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="vorname" value="{text value=$user.vorname allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="lastname"}:</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>
|
||||
<td class="td2"><input type="text" name="nachname" value="{text value=$user.nachname allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="company"}:</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>
|
||||
<td class="td2"><input type="text" name="company" value="{text value=$user.company allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="streetno"}:</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>
|
||||
<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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="zipcity"}:</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>
|
||||
<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>
|
||||
</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="{if isset($user.tel)}{text value=$user.tel allowEmpty=true}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="tel" value="{text value=$user.tel allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="fax"}:</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>
|
||||
<td class="td2"><input type="text" name="fax" value="{text value=$user.fax allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="cellphone"}:</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>
|
||||
<td class="td2"><input type="text" name="mail2sms_nummer" value="{text value=$user.mail2sms_nummer allowEmpty=true}" 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="{if isset($user.taxid)}{text value=$user.taxid}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="taxid" value="{text value=$user.taxid}" 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="{if isset($profileField.value)}{text value=$profileField.value allowEmpty=true}{/if}" style="width:85%;" />
|
||||
<input type="text" name="field_{$profileField.id}" value="{text value=$profileField.value allowEmpty=true}" 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="{if isset($item)}{text value=$item allowEmpty=true}{/if}"{if $profileField.value==$item} checked="checked"{/if} />
|
||||
<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} />
|
||||
<label for="field_{$profileField.id}_{$item}"><b>{$item}</b></label>
|
||||
{/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="{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>
|
||||
<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>
|
||||
</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="{if isset($user.datumsformat)}{text value=$user.datumsformat allowEmpty=true}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="datumsformat" value="{text value=$user.datumsformat allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="sendername"}:</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>
|
||||
<td class="td2"><input type="text" name="absendername" value="{text value=$user.absendername allowEmpty=true}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -318,7 +318,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="{if isset($showAliases)}un{/if}collapsed">
|
||||
<fieldset class="{if $showAliases}un{/if}collapsed">
|
||||
<legend><a href="javascript:;" onclick="toggleFieldset(this)">{lng p="aliases"}</a></legend>
|
||||
<div class="content">
|
||||
<table class="list">
|
||||
|
@ -342,7 +342,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="{if isset($showPayments)}un{/if}collapsed">
|
||||
<fieldset class="{if $showPayments}un{/if}collapsed">
|
||||
<legend><a href="javascript:;" onclick="toggleFieldset(this)">{lng p="payments"}</a> ({lng p="max"} 15)</legend>
|
||||
<div class="content">
|
||||
<table class="list">
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<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 !empty($queryString)}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
|
||||
{if $queryString}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
|
||||
|
||||
{if isset($searchQuery)}
|
||||
{if $searchQuery}
|
||||
<fieldset>
|
||||
<legend>{lng p="search"}</legend>
|
||||
|
||||
|
@ -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 !empty($field.checked)} checked="checked"{/if} />
|
||||
<input type="checkbox" name="field_{$fieldID}" id="field_{$fieldID}"{if $field.checked} checked="checked"{/if} />
|
||||
<label for="field_{$fieldID}"><b>{text value=$field.feld}</b></label><br />
|
||||
{/foreach}
|
||||
</td>
|
||||
|
|
|
@ -29,9 +29,6 @@
|
|||
<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"> </td>
|
||||
|
|
|
@ -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 !empty($queryString)}<input type="hidden" name="query" id="query" value="{text value=$queryString}" />{/if}
|
||||
{if $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>
|
||||
|
|
|
@ -135,7 +135,7 @@
|
|||
<tr>
|
||||
<td width="20" valign="top"><img src="{$tpldir}images/{$notice.type}.png" width="16" height="16" border="0" alt="" align="absmiddle" /></td>
|
||||
<td valign="top">{$notice.text}</td>
|
||||
<td align="right" valign="top" width="20">{if isset($notice.link)}<a href="{$notice.link}sid={$sid}"><img src="{$tpldir}images/go.png" border="0" alt="" width="16" height="16" /></a>{else} {/if}</td>
|
||||
<td align="right" valign="top" width="20">{if $notice.link}<a href="{$notice.link}sid={$sid}"><img src="{$tpldir}images/go.png" border="0" alt="" width="16" height="16" /></a>{else} {/if}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</table>
|
||||
|
|
|
@ -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="{if isset($folder.titel)}{text value=$folder.titel}{/if}" style="width:85%;" /></td>
|
||||
<td class="td2"><input type="text" name="titel" value="{text value=$folder.titel}" style="width:85%;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td1">{lng p="itemsperpage"}:</td>
|
||||
|
|
|
@ -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,absendername ' . $theQuery . ' '
|
||||
$res = $db->Query('SELECT id,email,vorname,nachname,strasse,hnr,plz,ort,gruppe,gesperrt,lastlogin,profilfelder ' . $theQuery . ' '
|
||||
. 'ORDER BY ' . $sortBy . ' '
|
||||
. $sortOrder . ' '
|
||||
. 'LIMIT ' . $startPos . ',' . $perPage);
|
||||
|
@ -903,8 +903,6 @@ 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
|
||||
|
|
|
@ -189,6 +189,11 @@ 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')
|
||||
|
@ -286,7 +291,7 @@ if($_REQUEST['action'] == 'welcome')
|
|||
'link' => 'prefs.common.php?');
|
||||
|
||||
// struct storage recommended?
|
||||
if($bm_prefs['structstorage'] == 'no')
|
||||
if($bm_prefs['structstorage'] == 'no' && !ini_get('safe_mode'))
|
||||
$notices[] = array('type' => 'info',
|
||||
'text' => $lang_admin['structrec'],
|
||||
'link' => 'prefs.common.php?');
|
||||
|
|
|
@ -41,7 +41,7 @@ if(isset($_COOKIE['bm_language'])
|
|||
}
|
||||
}
|
||||
|
||||
require './serverlib/init.inc.php';
|
||||
include('./serverlib/init.inc.php');
|
||||
if(isset($_REQUEST['sid']) && trim($_REQUEST['sid']) != '')
|
||||
RequestPrivileges(PRIVILEGES_USER, true) || RequestPrivileges(PRIVILEGES_ADMIN, true);
|
||||
|
||||
|
|
|
@ -1,196 +1,5 @@
|
|||
⚠️️️ **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
|
||||
|
||||
Fixed Issues:
|
||||
|
||||
* [#5333](https://github.com/ckeditor/ckeditor4/issues/5333): Fixed: The original name of the uploaded image is not preserved by the [Upload Image](https://ckeditor.com/cke4/addon/uploadimage) plugin if the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin has enabled image handling.
|
||||
* [#2881](https://github.com/ckeditor/ckeditor4/issues/2881): Fixed: Changing table headers from "Both" to "First column" in the [Table](https://ckeditor.com/cke4/addon/table) dialog does not change the first column cell correctly.
|
||||
* [#2996](https://github.com/ckeditor/ckeditor4/issues/2996): Fixed: Table header "scope" attribute is incorrect for the "Headers: both" option in the [Table](https://ckeditor.com/cke4/addon/table) dialog.
|
||||
* [#4802](https://github.com/ckeditor/ckeditor4/issues/4802): Fixed: [Tableselection](https://ckeditor.com/cke4/addon/tableselection) caret moves to the previous cell after tabbing into the next cell and then removing its content.
|
||||
* [#5365](https://github.com/ckeditor/ckeditor4/issues/5365): Fixed: The value of the [`config.baseFloatZIndex`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-baseFloatZIndex) config variable is incorrectly applied to parent dialog when the child dialog is closed resulting in the dialog overlay covering up the dialog. Thanks to [JenoDK](https://github.com/JenoDK)!
|
||||
* [#5305](https://github.com/ckeditor/ckeditor4/issues/5305): Fixed: Anchor name can invalidly include spaces.
|
||||
|
||||
## CKEditor 4.20
|
||||
|
||||
New Features:
|
||||
|
||||
* [#5084](https://github.com/ckeditor/ckeditor4/issues/5084): Added the [`config.tabletools_scopedHeaders`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-tabletools_scopedHeaders) configuration option controlling the behaviour of table headers with and without the `[scope]` attribute.
|
||||
* [#5219](https://github.com/ckeditor/ckeditor4/issues/5219): Added the [`config.image2_defaultLockRatio`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-image2_defaultLockRatio) configuration option allowing to set the default value of the "Lock ratio" option in the [Enhanced Image](https://ckeditor.com/cke4/addon/image2) dialog.
|
||||
* [#2008](https://github.com/ckeditor/ckeditor-dev/pull/2008): Extended the [Mentions](https://ckeditor.com/cke4/addon/mentions) and [Emoji](https://ckeditor.com/cke4/addon/emoji) plugins with a feature option that adds a space after an accepted autocompletion match. See:
|
||||
* [`configDefinition.followingSpace`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_mentions_configDefinition.html#property-followingSpace) option for the mentions plugin, and
|
||||
* [`config.emoji_followingSpace`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-emoji_followingSpace) option for the emoji plugin.
|
||||
* [#5215](https://github.com/ckeditor/ckeditor4/issues/5215): Added the [`config.coreStyles_toggleSubSup`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-coreStyles_toggleSubSup) configuration option which disallows setting the subscript and superscript on the same element simultaneously using UI buttons. This option is turned off by default.
|
||||
|
||||
Fixed Issues:
|
||||
|
||||
* [#4889](https://github.com/ckeditor/ckeditor4/issues/4889): Fixed: Incorrect position of the [Table Resize](https://ckeditor.com/cke4/addon/tableresize) cursor after scrolling the editor horizontally.
|
||||
* [#5319](https://github.com/ckeditor/ckeditor4/issues/5319): Fixed: [Autolink](https://ckeditor.com/cke4/addon/autolink) [`config.autolink_urlRegex`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-autolink_urlRegex) option produced invalid links when configured directly using the editor instance config. Thanks to [Aigars Zeiza](https://github.com/Zuzon)!
|
||||
* [#4941](https://github.com/ckeditor/ckeditor4/issues/4941): Fixed: Some entities got wrongly encoded when using [`entities_processNumerical = true`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-entities_processNumerical) configuration option.
|
||||
* [#4931](https://github.com/ckeditor/ckeditor4/issues/4931): Fixed: Selecting the whole editor content when there is only a list with an empty element at the end inside and deleting it did not delete all list items.
|
||||
|
||||
|
||||
API changes:
|
||||
|
||||
* [#5122](https://github.com/ckeditor/ckeditor4/issues/5122): Added the ability to provide a list of buttons as an array to the [`config.removeButtons`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-removeButtons) config variable.
|
||||
* [#2008](https://github.com/ckeditor/ckeditor-dev/pull/2008): Added [Autocomplete](https://ckeditor.com/cke4/addon/autocomplete) [`followingSpace`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_autocomplete_configDefinition.html#property-followingSpace) option that finishes an accepted match with a space.
|
||||
|
||||
## CKEditor 4.19.1
|
||||
|
||||
Fixed Issues:
|
||||
|
||||
* [#5125](https://github.com/ckeditor/ckeditor4/issues/5125): Fixed: Deleting a widget with disabled [autoParagraph](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-autoParagraph) by the keyboard `backspace` key removes the editor editable area and crashes the editor.
|
||||
* [#5135](https://github.com/ckeditor/ckeditor4/issues/5135): Fixed: The [`checkbox.setValue`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ui_dialog_checkbox.html#method-setValue) and [`radio.setValue`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ui_dialog_radio.html#method-setValue) methods are not chainable as stated in the documentation. Thanks to [Jordan Bradford](https://github.com/LordPachelbel)!
|
||||
* [#5085](https://github.com/ckeditor/ckeditor4/issues/5085): Fixed: The [Language](https://ckeditor.com/cke4/addon/language) plugin removes the element marking the text in foreign language if said element does not have an information about the text direction.
|
||||
* [#4284](https://github.com/ckeditor/ckeditor4/issues/4284): Fixed: [Tableselection](https://ckeditor.com/cke4/addon/tableselection) Merging cells with a rowspan throws an unexpected error and does not create an undo step.
|
||||
* [#5184](https://github.com/ckeditor/ckeditor4/issues/5184): Fixed: The [Editor Placeholder](https://ckeditor.com/cke4/addon/wysiwygarea) plugin degrades typing performance.
|
||||
* [#5158](https://github.com/ckeditor/ckeditor4/issues/5158): Fixed: [`CKEDITOR.tools#convertToPx()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-convertToPx) gives invalid results if the helper calculator element was deleted from the DOM.
|
||||
* [#5234](https://github.com/ckeditor/ckeditor4/issues/5234): Fixed: [Easy Image](https://ckeditor.com/cke4/addon/easyimage) doesn't allow to upload images files using toolbar button.
|
||||
* [#438](https://github.com/ckeditor/ckeditor4/issues/438): Fixed: It is impossible to navigate to the [elementspath](https://ckeditor.com/cke4/addon/elementspath) from the [toolbar](https://ckeditor.com/cke4/addon/toolbar) by keyboard and vice versa.
|
||||
* [#4449](https://github.com/ckeditor/ckeditor4/issues/4449): Fixed: [`dialog.validate#functions`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-functions) incorrectly composes functions that return an optional error message, like e.g. [`dialog.validate.number`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-number) due to unnecessary return type coercion.
|
||||
* [#4473](https://github.com/ckeditor/ckeditor4/issues/4473): Fixed: The [dialog.validate](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html) method does not accept parameter value. The issue originated in [dialog.validate.functions](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-functions) method that did not properly propagate parameter value to validator. Affected validators:
|
||||
* [`functions`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-functions)
|
||||
* [`equals`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-equals)
|
||||
* [`notEqual`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-notEqual)
|
||||
* [`cssLength`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-cssLength)
|
||||
* [`htmlLength`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-htmlLength)
|
||||
* [`inlineStyle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-inlineStyle)
|
||||
* [#5147](https://github.com/ckeditor/ckeditor4/issues/5147): Fixed: The [Accessibility Help](https://ckeditor.com/cke4/addon/a11yhelp) dialog does not contain info about focus being moved back to the editing area upon leaving dialogs.
|
||||
* [#5144](https://github.com/ckeditor/ckeditor4/issues/5144): Fixed: [Menu buttons](https://ckeditor.com/cke4/addon/menubutton) and [panel buttons](https://ckeditor.com/cke4/addon/panelbutton) incorrectly indicate the open status of their associated pop-up menus in the browser's accessibility tree.
|
||||
* [#5022](https://github.com/ckeditor/ckeditor4/issues/5022): Fixed: [Find and Replace](https://ckeditor.com/cke4/addon/find) does not respond to the `Enter` key.
|
||||
|
||||
API changes:
|
||||
|
||||
* [#5184](https://github.com/ckeditor/ckeditor4/issues/5184): Added the [`config.editorplaceholder_delay`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-editorplaceholder_delay) configuration option allowing to delay placeholder before it is toggled when changing editor content.
|
||||
* [#5184](https://github.com/ckeditor/ckeditor4/issues/5184): Added the [`CKEDITOR.tools#debounce()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-debounce) function allowing to postpone a passed function execution until the given milliseconds have elapsed since the last time it was invoked.
|
||||
|
||||
## CKEditor 4.19.0
|
||||
|
||||
New features:
|
||||
|
||||
* [#2444](https://github.com/ckeditor/ckeditor4/issues/2444): Togglable toolbar buttons are now exposed as toggle buttons in the browser's accessibility tree.
|
||||
* [#4641](https://github.com/ckeditor/ckeditor4/issues/4641): Added an option allowing to cancel the [Delayed Editor Creation](https://ckeditor.com/docs/ckeditor4/latest/features/delayed_creation.html) feature as a function handle for editor creators ([`CKEDITOR.replace`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-replace), [`CKEDITOR.inline`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-inline), [`CKEDITOR.appendTo`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-appendTo)).
|
||||
* [#4986](https://github.com/ckeditor/ckeditor4/issues/4986): Added [`config.shiftLineBreaks`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-shiftLineBreaks) allowing to preserve inline elements formatting when the `shift`+`enter` keystroke is used.
|
||||
* [#2445](https://github.com/ckeditor/ckeditor4/issues/2445): Added [`config.applicationTitle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-applicationTitle) configuration option allowing to customize or disable the editor's application region label. This option, combined with [`config.title`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-title), gives much better control over the editor's labels read by screen readers.
|
||||
|
||||
Fixed Issues:
|
||||
|
||||
* [#4543](https://github.com/ckeditor/ckeditor4/issues/4543): Fixed: Toolbar buttons toggle state is not correctly announced by screen readers lacking the information whether the feature is on or off.
|
||||
* [#4052](https://github.com/ckeditor/ckeditor4/issues/4052): Fixed: Editor labels are read incorrectly by screen readers due to invalid editor control type for the [Iframe Editing Area](https://ckeditor.com/cke4/addon/wysiwygarea) editors.
|
||||
* [#1904](https://github.com/ckeditor/ckeditor4/issues/1904): Fixed: Screen readers are not announcing the read-only editor state.
|
||||
* [#4904](https://github.com/ckeditor/ckeditor4/issues/4904): Fixed: Table cell selection and navigation with the `tab` key behavior is inconsistent after adding a new row.
|
||||
* [#3394](https://github.com/ckeditor/ckeditor4/issues/3394): Fixed: [Enhanced image](https://ckeditor.com/cke4/addon/image2) plugin dialog is not supporting URL with query string parameters. Thanks to [Simon Urli](https://github.com/surli)!
|
||||
* [#5049](https://github.com/ckeditor/ckeditor4/issues/5049): Fixed: The editor fails in strict mode due to not following the `use strict` directives in a core editor module.
|
||||
* [#5095](https://github.com/ckeditor/ckeditor4/issues/5095): Fixed: The [clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin shows notification about unsupported file format when the file type is different than `jpg`, `gif`, `png`, not respecting [supported types](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_fileTools_uploadWidgetDefinition.html#property-supportedTypes) by the [Upload Widget](https://ckeditor.com/cke4/addon/uploadwidget) plugin.
|
||||
* [#4855](https://github.com/ckeditor/ckeditor4/issues/4855): [iOS] Fixed: Focusing toolbar buttons with an enabled VoiceOver screen reader moves the browser focus into an editable area and interrupts button functionality.
|
||||
|
||||
API changes:
|
||||
|
||||
* [#4641](https://github.com/ckeditor/ckeditor4/issues/4641): The [`CKEDITOR.replace`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-replace), [`CKEDITOR.inline`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-inline), [`CKEDITOR.appendTo`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-appendTo) functions are now returning a handle function allowing to cancel the [Delayed Editor Creation](https://ckeditor.com/docs/ckeditor4/latest/features/delayed_creation.html) feature.
|
||||
* [#5095](https://github.com/ckeditor/ckeditor4/issues/5095): Added the [CKEDITOR.plugins.clipboard.addFileMatcher](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_clipboard.html#method-addFileMatcher) function allowing to define file formats supported by the [clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin. Trying to paste unsupported files will result in a notification that a file cannot be dropped or pasted into the editor.
|
||||
* [#2445](https://github.com/ckeditor/ckeditor4/issues/2445): Added [`config.applicationTitle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-applicationTitle) alongside [`CKEDITOR.editor#applicationTitle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#property-applicationTitle) to allow customizing editor's application region label.
|
||||
|
||||
## CKEditor 4.18.0
|
||||
|
||||
**Security Updates:**
|
||||
|
||||
* Fixed an XSS vulnerability in the core module reported by GitHub Security Lab team member [Kevin Backhouse](https://github.com/kevinbackhouse).
|
||||
|
||||
Issue summary: The vulnerability allowed to inject malformed HTML bypassing content sanitization, which could result in executing a JavaScript code. See [CVE-2022-24728](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-4fc4-4p5g-6w89) for more details.
|
||||
|
||||
* Fixed a Regular expression Denial of Service (ReDoS) vulnerability in dialog plugin discovered by the CKEditor 4 team during our regular security audit.
|
||||
|
||||
Issue summary: The vulnerability allowed to abuse a dialog input validator regular expression, which could cause a significant performance drop resulting in a browser tab freeze. See [CVE-2022-24729](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-f6rf-9m92-x2hh) for more details.
|
||||
|
||||
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!**
|
||||
|
||||
**Highlights:**
|
||||
|
||||
[Web Spell Checker](https://webspellchecker.com/) ended support for WebSpellChecker Dialog on December 31st, 2021. This means the plugin is not supported any longer. Therefore, we decided to deprecate and remove the WebSpellChecker Dialog plugin from CKEditor 4 presets.
|
||||
|
||||
We strongly encourage everyone to choose one of the other available spellchecking solutions - [Spell Check As You Type (SCAYT)](https://ckeditor.com/cke4/addon/scayt) or [WProofreader](https://ckeditor.com/cke4/addon/wproofreader).
|
||||
|
||||
Fixed issues:
|
||||
|
||||
* [#5097](https://github.com/ckeditor/ckeditor4/issues/5097): [Chrome] Fixed: Incorrect conversion of points to pixels while using [`CKEDITOR.tools.convertToPx()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-convertToPx).
|
||||
* [#5044](https://github.com/ckeditor/ckeditor4/issues/5044): Fixed: `select` elements with `multiple` attribute had incorrect styling. Thanks to [John R. D'Orazio](https://github.com/JohnRDOrazio)!
|
||||
|
||||
Other changes:
|
||||
|
||||
* [#5093](https://github.com/ckeditor/ckeditor4/issues/5093): Deprecated and removed WebSpellChecker Dialog from presets.
|
||||
* [#5127](https://github.com/ckeditor/ckeditor4/issues/5127): Deprecated the [`CKEDITOR.rnd`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#property-rnd) property to discourage using it in a security-sensitive context.
|
||||
* [#5087](https://github.com/ckeditor/ckeditor4/issues/5087): Improved the jQuery adapter by replacing a deprecated jQuery API with existing counterparts. Thanks to [Fran Boon](https://github.com/flavour)!
|
||||
* [#5128](https://github.com/ckeditor/ckeditor4/issues/5128): Improved the [Emoji](https://ckeditor.com/cke4/addon/emoji) definitions encoding set by the [`config.emoji_emojiListUrl`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-emoji_emojiListUrl) configuration option.
|
||||
CKEditor 4 Changelog
|
||||
====================
|
||||
|
||||
## CKEditor 4.17.2
|
||||
|
||||
|
@ -235,11 +44,11 @@ Fixed issues:
|
|||
|
||||
* Fixed XSS vulnerability in the core module reported by [William Bowling](https://github.com/wbowling).
|
||||
|
||||
Issue summary: The vulnerability allowed to inject malformed comments HTML bypassing content sanitization, which could result in executing JavaScript code. See [CVE-2021-41165](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7h26-63m7-qhf2) for more details.
|
||||
Issue summary: The vulnerability allowed to inject malformed comments HTML bypassing content sanitization, which could result in executing JavaScript code. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7h26-63m7-qhf2) for more details.
|
||||
|
||||
* Fixed XSS vulnerability in the core module reported by [Maurice Dauer](https://twitter.com/laytonctf).
|
||||
|
||||
Issue summary: The vulnerability allowed to inject malformed HTML bypassing content sanitization, which could result in executing JavaScript code. See [CVE-2021-41164](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-pvmx-g8h5-cprj) for more details.
|
||||
Issue summary: The vulnerability allowed to inject malformed HTML bypassing content sanitization, which could result in executing JavaScript code. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-pvmx-g8h5-cprj) for more details.
|
||||
|
||||
You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions.
|
||||
|
||||
|
@ -301,15 +110,15 @@ Other Changes:
|
|||
|
||||
* Fixed XSS vulnerability in the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin reported by [Anton Subbotin](https://github.com/skavans).
|
||||
|
||||
Issue summary: The vulnerability allowed to abuse paste functionality using malformed HTML, which could result in injecting arbitrary HTML into the editor. See [CVE-2021-32809](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7889-rm5j-hpgg) for more details.
|
||||
Issue summary: The vulnerability allowed to abuse paste functionality using malformed HTML, which could result in injecting arbitrary HTML into the editor. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7889-rm5j-hpgg) for more details.
|
||||
|
||||
* Fixed XSS vulnerability in the [Widget](https://ckeditor.com/cke4/addon/widget) plugin reported by [Anton Subbotin](https://github.com/skavans).
|
||||
|
||||
Issue summary: The vulnerability allowed to abuse undo functionality using malformed [Widget](https://ckeditor.com/cke4/addon/widget) HTML, which could result in executing JavaScript code. See [CVE-2021-32808](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-6226-h7ff-ch6c) for more details.
|
||||
Issue summary: The vulnerability allowed to abuse undo functionality using malformed [Widget](https://ckeditor.com/cke4/addon/widget) HTML, which could result in executing JavaScript code. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-6226-h7ff-ch6c) for more details.
|
||||
|
||||
* Fixed XSS vulnerability in the [Fake Objects](https://ckeditor.com/cke4/addon/fakeobjects) plugin reported by [Mika Kulmala](https://github.com/kulmik).
|
||||
|
||||
Issue summary: The vulnerability allowed to inject malformed [Fake Objects](https://ckeditor.com/cke4/addon/fakeobjects) HTML, which could result in executing JavaScript code. See [CVE-2021-37695](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-m94c-37g6-cjhc) for more details.
|
||||
Issue summary: The vulnerability allowed to inject malformed [Fake Objects](https://ckeditor.com/cke4/addon/fakeobjects) HTML, which could result in executing JavaScript code. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-m94c-37g6-cjhc) for more details.
|
||||
|
||||
You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions.
|
||||
|
||||
|
|
|
@ -1,16 +1,8 @@
|
|||
Software License Agreement for CKEditor 4 LTS (4.23.0 and above)
|
||||
================================================================
|
||||
Software License Agreement
|
||||
==========================
|
||||
|
||||
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.
|
||||
CKEditor - The text editor for Internet - https://ckeditor.com/
|
||||
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
|
||||
Licensed under the terms of any of the following licenses at your
|
||||
choice:
|
||||
|
@ -45,7 +37,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-2023, CKSource Holding sp. z o.o.
|
||||
* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2022, 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.
|
||||
|
|
8
src/clientlib/ckeditor/adapters/jquery.js
vendored
8
src/clientlib/ckeditor/adapters/jquery.js
vendored
|
@ -1,10 +1,10 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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},
|
||||
ckeditor:function(g,e){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if("function"!==typeof g){var m=e;e=g;g=m}var k=[];e=e||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function d(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(d,100)},0)},null,null,
|
||||
9999);else{if(e.autoUpdateElement||"undefined"==typeof e.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)e.autoUpdateElementJquery=!0;e.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,e):CKEDITOR.inline(h,e);b.data("ckeditorInstance",c);c.on("instanceReady",function(e){var d=e.editor;setTimeout(function n(){if(d.element){e.removeListener();d.on("dataReady",function(){b.trigger("dataReady.ckeditor",[d])});d.on("setData",function(a){b.trigger("setData.ckeditor",
|
||||
[d,a.data])});d.on("getData",function(a){b.trigger("getData.ckeditor",[d,a.data])},999);d.on("destroy",function(){b.trigger("destroy.ckeditor",[d])});d.on("save",function(){a(h.form).trigger("submit");return!1},null,null,20);if(d.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){d.updateElement()})};a(h.form).on("submit",c);a(h.form).on("form-pre-serialize",c);b.on("destroy.ckeditor",function(){a(h.form).off("submit",c);a(h.form).off("form-pre-serialize",
|
||||
ckeditor:function(g,e){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=e;e=g;g=m}var k=[];e=e||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function d(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(d,100)},0)},null,null,9999);
|
||||
else{if(e.autoUpdateElement||"undefined"==typeof e.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)e.autoUpdateElementJquery=!0;e.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,e):CKEDITOR.inline(h,e);b.data("ckeditorInstance",c);c.on("instanceReady",function(e){var d=e.editor;setTimeout(function n(){if(d.element){e.removeListener();d.on("dataReady",function(){b.trigger("dataReady.ckeditor",[d])});d.on("setData",function(a){b.trigger("setData.ckeditor",
|
||||
[d,a.data])});d.on("getData",function(a){b.trigger("getData.ckeditor",[d,a.data])},999);d.on("destroy",function(){b.trigger("destroy.ckeditor",[d])});d.on("save",function(){a(h.form).submit();return!1},null,null,20);if(d.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){d.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",
|
||||
c)})}d.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[d]);g&&g.apply(d,[h]);l.resolve()}else setTimeout(n,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(e){if(arguments.length){var m=
|
||||
this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(e,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,e)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery);
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/
|
||||
*/
|
||||
|
||||
|
@ -13,10 +13,10 @@
|
|||
* (1) https://ckeditor.com/cke4/builder
|
||||
* Visit online builder to build CKEditor from scratch.
|
||||
*
|
||||
* (2) https://ckeditor.com/cke4/builder/50e66534ec806d58dee47b4bbf047e2f
|
||||
* (2) https://ckeditor.com/cke4/builder/948bf8010ca183a767f6c0815b9aa51f
|
||||
* Visit online builder to build CKEditor, starting with the same setup as before.
|
||||
*
|
||||
* (3) https://ckeditor.com/cke4/builder/download/50e66534ec806d58dee47b4bbf047e2f
|
||||
* (3) https://ckeditor.com/cke4/builder/download/948bf8010ca183a767f6c0815b9aa51f
|
||||
* Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
|
||||
*
|
||||
* NOTE:
|
||||
|
|
1113
src/clientlib/ckeditor/ckeditor.js
vendored
1113
src/clientlib/ckeditor/ckeditor.js
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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+
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -1,9 +1,8 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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"===
|
||||
a.data("cke-real-element-type")||a.is("a"))?a:void 0;return b||null},onOk:function(){var b=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),b={id:b,name:b,"data-cke-saved-name":b},a=this.getModel(c);if(a)a.data("cke-realelement")?(b=f(c,b),b.replace(a),CKEDITOR.env.ie&&c.getSelection().selectElement(b)):a.setAttributes(b);else if(a=(a=c.getSelection())&&a.getRanges()[0],a.collapsed)b=f(c,b),a.insertNode(b);else{CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(b["class"]="cke_anchor");var d=a.clone();
|
||||
d.enlarge(CKEDITOR.ENLARGE_ELEMENT);for(var e=new CKEDITOR.dom.walker(d),d=d.collapsed?d.startContainer:e.next(),g=a.createBookmark();d;)d.type===CKEDITOR.NODE_ELEMENT&&d.getAttribute("data-cke-saved-name")&&(d.remove(!0),e.reset()),d=e.next();a.moveToBookmark(g);b=new CKEDITOR.style({element:"a",attributes:b});b.type=CKEDITOR.STYLE_INLINE;b.applyToRange(a)}},onShow:function(){var b=c.getSelection(),a=this.getModel(c),d=a&&a.data("cke-realelement");if(a=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,
|
||||
a):CKEDITOR.plugins.link.getSelectedLink(c)){var e=a.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){var b=this.getValue();return b?/[\u0020\u0009\u000a\u000c\u000d]/g.test(b)?(alert(c.lang.link.anchor.errorWhitespace),!1):!0:(alert(c.lang.link.anchor.errorName),
|
||||
!1)}}]}]}});
|
||||
a):CKEDITOR.plugins.link.getSelectedLink(c)){var e=a.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()?!0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}});
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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=
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* @license Copyright (c) 2003-2022, 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) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 – The text editor for the Internet – <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
|
||||
</p>
|
||||
<p class="grid-width-100" id="copy">
|
||||
Copyright © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* Copyright (c) 2003-2022, 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).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
|
|
|
@ -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-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
||||
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
||||
Copyright (c) 2003-2022, 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 – The text editor for the Internet – <a class="samples" href="https://ckeditor.com/">https://ckeditor.com</a>
|
||||
</p>
|
||||
<p class="grid-width-100" id="copy">
|
||||
Copyright © 2003-2023, <a class="samples" href="https://cksource.com/">CKSource</a> Holding sp. z o.o. All rights reserved.
|
||||
Copyright © 2003-2022, <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
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue