Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/webling/src/actions/webling_form_submit.php
+++ b/webling/src/actions/webling_form_submit.php
@@ -13,13 +13,16 @@
global $wpdb;
if(isset($_POST['webling-form-id'])) {
+ if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'webling_form_submit')) {
+ wp_die(esc_html__('Security check failed', 'webling'));
+ }
try {
$_POST = stripslashes_deep($_POST);
$id = intval($_POST['webling-form-id']);
if (isset($_POST['webling-form-field'][0]) && strlen($_POST['webling-form-field'][0]) > 0) {
// Honeypot data was submitted
- throw new Exception('Sweet, you just discovered the honeypot');
+ throw new Exception(esc_html__('Sweet, you just discovered the honeypot', 'webling'));
}
$options = get_option('webling-options');
@@ -43,11 +46,11 @@
if (class_exists('FriendlyCaptcha_Plugin') && function_exists('frcaptcha_get_sanitized_frcaptcha_solution_from_post') && function_exists('frcaptcha_verify_captcha_solution')) {
$plugin = FriendlyCaptcha_Plugin::$instance;
if ($plugin->is_configured()) {
- $errorPrefix = '<strong>' . __('Error', 'wp-captcha') . '</strong> : ';
+ $errorPrefix = '<strong>' . esc_html__('Error', 'wp-captcha') . '</strong> : ';
$solution = frcaptcha_get_sanitized_frcaptcha_solution_from_post();
if (empty($solution)) {
- wp_die($errorPrefix . FriendlyCaptcha_Plugin::default_error_user_message() . __(" (captcha missing)", "frcaptcha"));
+ wp_die($errorPrefix . FriendlyCaptcha_Plugin::default_error_user_message() . esc_html__(" (captcha missing)", "frcaptcha"));
}
$verification = frcaptcha_verify_captcha_solution($solution, $plugin->get_sitekey(), $plugin->get_api_key());
@@ -69,7 +72,7 @@
$client = WeblingApiHelper::Instance()->client();
$response = $client->get('membergroup/' . $formconfig['group_id']);
if ($response->getStatusCode() !== 200) {
- throw new Exception('Error fetching membergroup');
+ throw new Exception(esc_html__('Error fetching membergroup', 'webling'));
}
$membergroup = $response->getData();
$childrenCount = 0;
@@ -233,7 +236,7 @@
}
}
- $body .= PHP_EOL.PHP_EOL.__("Ein Mitglied mit diesen Daten wurde in deinem Webling erfasst.nnDein WordPress", 'webling');
+ $body .= PHP_EOL.PHP_EOL.esc_html__("Ein Mitglied mit diesen Daten wurde in deinem Webling erfasst.nnDein WordPress", 'webling');
$body .= PHP_EOL.get_site_url();
wp_mail($to, $subject, $body);
@@ -254,14 +257,14 @@
// only send if email address is valid
if (is_email($email)) {
- $subject = trim(__($formconfig['confirmation_email_subject'], 'webling-dynamic'));
+ $subject = trim(esc_html__($formconfig['confirmation_email_subject'], 'webling-dynamic'));
if(!$subject) {
// if subject is empty, add default subject
- $subject = __("Ihre Anmeldung", 'webling');
+ $subject = esc_html__("Ihre Anmeldung", 'webling');
}
- $body = trim(__($formconfig['confirmation_email_text'], 'webling-dynamic'));
+ $body = trim(esc_html__($formconfig['confirmation_email_text'], 'webling-dynamic'));
- // only send if mail body is not empty
+ // only send if mail body is not empty
if ($body) {
foreach ($fields as $fieldname) {
$val = $newmember['properties'][$fieldname];
@@ -269,17 +272,17 @@
if (isset($val['size'])) {
// images/files
$estimatedFileSize = size_format($val['size'] * (3/4), 1);
- $val = __('Ja', 'webling') . ' (' . $estimatedFileSize .')';
+ $val = esc_html__('Ja', 'webling') . ' (' . $estimatedFileSize .')';
} else {
// multienum
$val = implode(', ', $val);
}
} else if(is_bool($val)) {
// checkboxes
- $val = ($val ? __('Ja', 'webling') : __('Nein', 'webling'));
+ $val = ($val ? esc_html__('Ja', 'webling') : esc_html__('Nein', 'webling'));
}
- $subject = str_replace('[['.$fieldname.']]', $val, $subject);
- $body = str_replace('[['.$fieldname.']]', $val, $body);
+ $subject = str_replace('[['.$fieldname.']]', (string)$val, $subject);
+ $body = str_replace('[['.$fieldname.']]', (string)$val, $body);
}
wp_mail($email, $subject, $body);
}
--- a/webling/src/admin/actions/clear_cache_action.php
+++ b/webling/src/admin/actions/clear_cache_action.php
@@ -1,5 +1,9 @@
<?php
function webling_clear_cache_action() {
+ if (!current_user_can('manage_options')) {
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'webling'));
+ }
+ check_admin_referer('webling_clear_cache');
webling_clear_cache();
wp_redirect(admin_url('/admin.php?page=webling_page_settings'));
exit;
--- a/webling/src/admin/actions/save_form.php
+++ b/webling/src/admin/actions/save_form.php
@@ -2,6 +2,12 @@
function webling_admin_save_form()
{
+ if (!current_user_can('manage_options')) {
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'webling'));
+ }
+
+ check_admin_referer('webling_save_form');
+
global $wpdb;
$_POST = stripslashes_deep($_POST);
@@ -9,12 +15,14 @@
// sanitize id
$id = intval($_POST['form_id']);
- if ($id) {
+ // sanitize titles
+ $_POST['title'] = sanitize_text_field($_POST['title']);
+ if ($id) {
// check if form exists
$existing = $wpdb->get_row("SELECT id from {$wpdb->prefix}webling_forms WHERE id = ".$id);
if (!$existing) {
- die('Could not update form: form does not exist: '.$id);
+ wp_die(esc_html__('Could not update form: form does not exist: ', 'webling') . intval($id));
}
// update form
@@ -37,16 +45,16 @@
WHERE id = %d",
$_POST['title'],
intval($_POST['group_id']),
- $_POST['notification_email'],
- $_POST['confirmation_text'],
- $_POST['submit_button_text'],
+ sanitize_text_field($_POST['notification_email']),
+ wp_kses_post($_POST['confirmation_text']),
+ sanitize_text_field($_POST['submit_button_text']),
(isset($_POST['confirmation_email_enabled']) && $_POST['confirmation_email_enabled'] ? 1 : 0),
- $_POST['confirmation_email_subject'],
- $_POST['confirmation_email_text'],
+ sanitize_text_field($_POST['confirmation_email_subject']),
+ $_POST['confirmation_email_text'], // don't sanitize to allow HTML in confirmation email text
intval($_POST['confirmation_email_webling_field']),
intval($_POST['max_signups']),
- $_POST['max_signups_text'],
- $_POST['class'],
+ wp_kses_post($_POST['max_signups_text']),
+ sanitize_text_field($_POST['class']),
$id
)
);
@@ -85,16 +93,16 @@
)",
$_POST['title'],
intval($_POST['group_id']),
- $_POST['notification_email'],
- $_POST['confirmation_text'],
- $_POST['submit_button_text'],
+ sanitize_text_field($_POST['notification_email']),
+ wp_kses_post($_POST['confirmation_text']),
+ sanitize_text_field($_POST['submit_button_text']),
(isset($_POST['confirmation_email_enabled']) && $_POST['confirmation_email_enabled'] ? 1 : 0),
- $_POST['confirmation_email_subject'],
- $_POST['confirmation_email_text'],
+ sanitize_text_field($_POST['confirmation_email_subject']),
+ $_POST['confirmation_email_text'], // don't sanitize to allow HTML in confirmation email text
intval($_POST['confirmation_email_webling_field']),
intval($_POST['max_signups']),
- $_POST['max_signups_text'],
- $_POST['class']
+ wp_kses_post($_POST['max_signups_text']),
+ sanitize_text_field($_POST['class'])
)
);
@@ -150,11 +158,11 @@
intval($field['order']),
intval($field['webling_field_id']),
$required,
- $field['field_name'],
- $field['field_name_position'],
- $field['placeholder_text'],
- $field['description_text'],
- $field['class'],
+ sanitize_text_field($field['field_name']),
+ sanitize_text_field($field['field_name_position']),
+ sanitize_text_field($field['placeholder_text']),
+ sanitize_textarea_field($field['description_text']),
+ sanitize_text_field($field['class']),
$select_options
)
);
--- a/webling/src/admin/actions/save_memberlist.php
+++ b/webling/src/admin/actions/save_memberlist.php
@@ -2,6 +2,12 @@
function webling_admin_save_memberlist()
{
+ if (!current_user_can('manage_options')) {
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'webling'));
+ }
+
+ check_admin_referer('webling_save_memberlist');
+
global $wpdb;
$_POST = stripslashes_deep($_POST);
@@ -9,6 +15,16 @@
// sanitize id
$id = intval($_POST['list_id']);
+ // sanitize titles
+ $_POST['title'] = sanitize_text_field($_POST['title']);
+
+ // sanitize HTML fields according to capabilities
+ if (isset($_POST['custom_template'])) {
+ if (!current_user_can('unfiltered_html')) {
+ $_POST['custom_template'] = wp_kses_post($_POST['custom_template']);
+ }
+ }
+
// sanitize design
$available_designs = array('LIST', 'CUSTOM');
if (!in_array($_POST['design'], $available_designs)) {
@@ -56,10 +72,10 @@
WHERE id = %d",
$_POST['title'],
$groups,
- $_POST['fields'],
- $_POST['class'],
- $_POST['sortfield'],
- $_POST['sortorder'],
+ sanitize_text_field($_POST['fields']),
+ sanitize_text_field($_POST['class']),
+ sanitize_text_field($_POST['sortfield']),
+ sanitize_text_field($_POST['sortorder']),
$_POST['design'],
$_POST['custom_template'],
$_POST['type'],
@@ -97,10 +113,10 @@
)",
$_POST['title'],
$groups,
- $_POST['fields'],
- $_POST['class'],
- $_POST['sortfield'],
- $_POST['sortorder'],
+ sanitize_text_field($_POST['fields']),
+ sanitize_text_field($_POST['class']),
+ sanitize_text_field($_POST['sortfield']),
+ sanitize_text_field($_POST['sortorder']),
$_POST['design'],
$_POST['custom_template'],
$_POST['type'],
--- a/webling/src/admin/errors/no_connection.html.php
+++ b/webling/src/admin/errors/no_connection.html.php
@@ -1,7 +1,7 @@
-<h2><?php echo __('Webling Einstellungen überprüfen', 'webling'); ?></h2>
+<h2><?php echo esc_html__('Webling Einstellungen überprüfen', 'webling'); ?></h2>
<p>
- <?php echo __('Mit der aktuellen Konfiguration ist keine Verbindung zu Webling möglich. ', 'webling'); ?>
+ <?php echo esc_html__('Mit der aktuellen Konfiguration ist keine Verbindung zu Webling möglich. ', 'webling'); ?>
<br>
- <?php echo __('Bitte zuerst die Einstellungen des Webling Plugins hier vervollständigen: ', 'webling'); ?>
- <a href="<?php echo admin_url( 'admin.php?page=webling_page_settings' ); ?>"><?php echo __('Webling Einstellungen', 'webling'); ?></a>
+ <?php echo esc_html__('Bitte zuerst die Einstellungen des Webling Plugins hier vervollständigen: ', 'webling'); ?>
+ <a href="<?php echo admin_url( 'admin.php?page=webling_page_settings' ); ?>"><?php echo esc_html__('Webling Einstellungen', 'webling'); ?></a>
</p>
--- a/webling/src/admin/errors/no_read_access.html.php
+++ b/webling/src/admin/errors/no_read_access.html.php
@@ -1,7 +1,7 @@
-<h2><?php echo __('Webling Berechtigungen überprüfen', 'webling'); ?></h2>
+<h2><?php echo esc_html__('Webling Berechtigungen überprüfen', 'webling'); ?></h2>
<p>
- <?php echo __('Eine Verbindung zu Webling ist zwar möglich, aber der angegebene API-Key hat keinen Lese-Zugriff auf die Mitgliederdaten.', 'webling'); ?>
+ <?php echo esc_html__('Eine Verbindung zu Webling ist zwar möglich, aber der angegebene API-Key hat keinen Lese-Zugriff auf die Mitgliederdaten.', 'webling'); ?>
<br>
- <?php echo __('Bitte in der Webling Administration die Berechtigungen anpassen oder in den Einstellungen einen anderen API-Key eintragen:', 'webling'); ?>
- <a href="<?php echo admin_url( 'admin.php?page=webling_page_settings' ); ?>"><?php echo __('Webling Einstellungen', 'webling'); ?></a>
+ <?php echo esc_html__('Bitte in der Webling Administration die Berechtigungen anpassen oder in den Einstellungen einen anderen API-Key eintragen:', 'webling'); ?>
+ <a href="<?php echo admin_url( 'admin.php?page=webling_page_settings' ); ?>"><?php echo esc_html__('Webling Einstellungen', 'webling'); ?></a>
</p>
--- a/webling/src/admin/errors/no_write_access.html.php
+++ b/webling/src/admin/errors/no_write_access.html.php
@@ -1,7 +1,7 @@
-<h2><?php echo __('Webling Berechtigungen überprüfen', 'webling'); ?></h2>
+<h2><?php echo esc_html__('Webling Berechtigungen überprüfen', 'webling'); ?></h2>
<p>
- <?php echo __('Eine Verbindung zu Webling ist zwar möglich, aber der angegebene API-Key hat keinen Schreib-Zugriff auf die Mitgliederdaten.', 'webling'); ?>
+ <?php echo esc_html__('Eine Verbindung zu Webling ist zwar möglich, aber der angegebene API-Key hat keinen Schreib-Zugriff auf die Mitgliederdaten.', 'webling'); ?>
<br>
- <?php echo __('Bitte in der Webling Administration die Berechtigungen anpassen oder in den Einstellungen einen anderen API-Key eintragen:', 'webling'); ?>
- <a href="<?php echo admin_url( 'admin.php?page=webling_page_settings' ); ?>"><?php echo __('Webling Einstellungen', 'webling'); ?></a>
+ <?php echo esc_html__('Bitte in der Webling Administration die Berechtigungen anpassen oder in den Einstellungen einen anderen API-Key eintragen:', 'webling'); ?>
+ <a href="<?php echo admin_url( 'admin.php?page=webling_page_settings' ); ?>"><?php echo esc_html__('Webling Einstellungen', 'webling'); ?></a>
</p>
--- a/webling/src/admin/filters/update_field_webling_options.php
+++ b/webling/src/admin/filters/update_field_webling_options.php
@@ -13,5 +13,8 @@
$new_value['host'] = $url['scheme'] . '://' . $url['host'];
}
}
+ if (isset($new_value['css'])) {
+ $new_value['css'] = sanitize_textarea_field($new_value['css']);
+ }
return $new_value;
}
--- a/webling/src/admin/lists/Form_List.php
+++ b/webling/src/admin/lists/Form_List.php
@@ -119,7 +119,7 @@
{
switch ($column_name) {
case 'title':
- return '<a href="'.admin_url('admin.php?page=webling_page_form_edit&form_id='.$item['id']).'">' . $item['title'] . '</a>';
+ return '<a href="'.esc_url(admin_url('admin.php?page=webling_page_form_edit&form_id='.$item['id'])).'">' . esc_html($item['title']) . '</a>';
case 'shortcode':
return '<div>[webling_form id="'.$item['id'].'"]</div>';
default:
@@ -150,8 +150,8 @@
{
$columns = [
'cb' => '<input type="checkbox" />',
- 'title' => __('Title', 'webling'),
- 'shortcode' => __('Shortcode', 'webling'),
+ 'title' => esc_html__('Title', 'webling'),
+ 'shortcode' => esc_html__('Shortcode', 'webling'),
];
return $columns;
@@ -235,6 +235,7 @@
if ((isset($_POST['action']) && $_POST['action'] == 'webling_form_bulk_delete')
|| (isset($_POST['action2']) && $_POST['action2'] == 'webling_form_bulk_delete')
) {
+ check_admin_referer('bulk-' . $this->_args['plural']);
$delete_ids = esc_sql($_POST['webling_form_bulk_delete']);
--- a/webling/src/admin/lists/Memberlist_List.php
+++ b/webling/src/admin/lists/Memberlist_List.php
@@ -9,8 +9,8 @@
public function __construct()
{
parent::__construct([
- 'singular' => __('Memberliste', 'webling'), //singular name of the listed records
- 'plural' => __('Memberlisten', 'webling'), //plural name of the listed records
+ 'singular' => esc_html__('Memberliste', 'webling'), //singular name of the listed records
+ 'plural' => esc_html__('Memberlisten', 'webling'), //plural name of the listed records
'ajax' => false //should this table support ajax?
]);
}
@@ -112,7 +112,7 @@
{
switch ($column_name) {
case 'title':
- return '<a href="'.admin_url('admin.php?page=webling_page_memberlist_edit&list_id='.$item['id']).'">' . $item['title'] . '</a>';
+ return '<a href="'.esc_url(admin_url('admin.php?page=webling_page_memberlist_edit&list_id='.$item['id'])).'">' . esc_html($item['title']) . '</a>';
case 'shortcode':
return '<div>[webling_memberlist id="'.$item['id'].'"]</div>';
default:
@@ -143,8 +143,8 @@
{
$columns = [
'cb' => '<input type="checkbox" />',
- 'title' => __('Title', 'webling'),
- 'shortcode' => __('Shortcode', 'webling'),
+ 'title' => esc_html__('Title', 'webling'),
+ 'shortcode' => esc_html__('Shortcode', 'webling'),
];
return $columns;
@@ -229,6 +229,7 @@
if ((isset($_POST['action']) && $_POST['action'] == 'webling_list_bulk_delete')
|| (isset($_POST['action2']) && $_POST['action2'] == 'webling_list_bulk_delete')
) {
+ check_admin_referer('bulk-' . $this->_args['plural']);
$delete_ids = esc_sql($_POST['webling_list_bulk_delete']);
--- a/webling/src/admin/pages/form_edit.php
+++ b/webling/src/admin/pages/form_edit.php
@@ -60,14 +60,15 @@
echo '<div class="wrap webling-admin">';
if ($id) {
- echo '<h2>'.__('Formular bearbeiten', 'webling').' (ID: '.$id.')</h2>';
+ echo '<h2>'.esc_html__('Formular bearbeiten', 'webling').' (ID: '.$id.')</h2>';
} else {
- echo '<h2>'.__('Formular erstellen', 'webling').'</h2>';
+ echo '<h2>'.esc_html__('Formular erstellen', 'webling').'</h2>';
}
?>
<form action="admin-post.php" method="post">
<input type="hidden" name="action" value="save_form">
<input type="hidden" name="form_id" value="<?php echo $data['id']; ?>">
+ <?php wp_nonce_field('webling_save_form'); ?>
<div id="poststuff">
<div id="post-body" class="metabox-holder columns-2">
@@ -75,7 +76,7 @@
<div id="titlediv">
<div id="titlewrap">
- <input type="text" name="title" size="30" id="title" placeholder="<?php echo __('Formularname', 'webling') ?>" spellcheck="true" autocomplete="off" value="<?php echo esc_attr($data['title']); ?>">
+ <input type="text" name="title" size="30" id="title" placeholder="<?php echo esc_attr__('Formularname', 'webling') ?>" spellcheck="true" autocomplete="off" value="<?php echo esc_attr($data['title']); ?>">
</div>
</div>
@@ -83,9 +84,9 @@
<div class="bodywrap">
<h2 class="nav-tab-wrapper wp-clearfix webling-tabs">
- <a id="webling_form_tab_fields" href="#" onclick="webling_change_form_tab('fields')" class="nav-tab nav-tab-active"><?php echo __('Formularfelder', 'webling') ?></a>
- <a id="webling_form_tab_settings" href="#" onclick="webling_change_form_tab('settings')" class="nav-tab"><?php echo __('Einstellungen', 'webling') ?></a>
- <a id="webling_form_tab_emails" href="#" onclick="webling_change_form_tab('emails')" class="nav-tab"><?php echo __('E-Mails', 'webling') ?></a>
+ <a id="webling_form_tab_fields" href="#" onclick="webling_change_form_tab('fields')" class="nav-tab nav-tab-active"><?php echo esc_html__('Formularfelder', 'webling') ?></a>
+ <a id="webling_form_tab_settings" href="#" onclick="webling_change_form_tab('settings')" class="nav-tab"><?php echo esc_html__('Einstellungen', 'webling') ?></a>
+ <a id="webling_form_tab_emails" href="#" onclick="webling_change_form_tab('emails')" class="nav-tab"><?php echo esc_html__('E-Mails', 'webling') ?></a>
</h2>
<div class="webling-tabs-body">
@@ -93,7 +94,7 @@
<div id="webling_form_fields">
<br>
<div class="widgets-holder-wrap">
- <p class="webling-fields-hint"><?php echo __('Ziehe Felder aus der Seitenleiste in diesen Bereich um sie zum Formular hinzuzufügen.', 'webling') ?></p>
+ <p class="webling-fields-hint"><?php echo esc_html__('Ziehe Felder aus der Seitenleiste in diesen Bereich um sie zum Formular hinzuzufügen.', 'webling') ?></p>
<ul id="sortable_main" class="connectedSortable webling-fields-holder">
<?php
foreach ($formfields as $formfield) {
@@ -110,107 +111,107 @@
<div id="webling_form_settings" style="display: none">
<table class="form-table">
<tr>
- <th scope="row"><?php echo __('Mitglied in folgender Webling Gruppe erfassen', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Mitglied in folgender Webling Gruppe erfassen', 'webling') ?></th>
<td>
<?php echo self::group_select($data['group_id']); ?>
- <p class="description"><?php echo __('Nach dem Absenden des Formulars wird in dieser Gruppe in Webling ein Mitglied mit den angegebenen Daten erstellt.', 'webling') ?></p>
+ <p class="description"><?php echo esc_html__('Nach dem Absenden des Formulars wird in dieser Gruppe in Webling ein Mitglied mit den angegebenen Daten erstellt.', 'webling') ?></p>
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Text "Absenden"-Button', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Text "Absenden"-Button', 'webling') ?></th>
<td>
- <input type="text" placeholder="<?php echo __('Absenden', 'webling') ?>" name="submit_button_text" value="<?php echo esc_attr($data['submit_button_text']); ?>" class="regular-text">
- <p class="description"><?php echo __('Text der auf dem Formular Absenden Button steht', 'webling') ?></p>
+ <input type="text" placeholder="<?php echo esc_attr__('Absenden', 'webling') ?>" name="submit_button_text" value="<?php echo esc_attr($data['submit_button_text']); ?>" class="regular-text">
+ <p class="description"><?php echo esc_html__('Text der auf dem Formular Absenden Button steht', 'webling') ?></p>
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Bestätigungstext nach Absenden', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Bestätigungstext nach Absenden', 'webling') ?></th>
<td>
<?php wp_editor($data['confirmation_text'], 'confirmation_text'); ?>
- <p class="description"><?php echo __('Dieser Text wird dem Besucher angezeigt, nachdem das Formular abgesendet wurde.', 'webling') ?></p>
+ <p class="description"><?php echo esc_html__('Dieser Text wird dem Besucher angezeigt, nachdem das Formular abgesendet wurde.', 'webling') ?></p>
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('CSS Klasse', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('CSS Klasse', 'webling') ?></th>
<td>
- <input type="text" placeholder="<?php echo __('CSS Klasse', 'webling') ?>" name="class" value="<?php echo esc_attr($data['class']); ?>" class="regular-text">
- <p class="description"><?php echo __('CSS Klasse für dieses Formular, kann für eigene Designanpassungen verwendet werden.', 'webling') ?></p>
+ <input type="text" placeholder="<?php echo esc_attr__('CSS Klasse', 'webling') ?>" name="class" value="<?php echo esc_attr($data['class']); ?>" class="regular-text">
+ <p class="description"><?php echo esc_html__('CSS Klasse für dieses Formular, kann für eigene Designanpassungen verwendet werden.', 'webling') ?></p>
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Maximale Anzahl Anmeldungen', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Maximale Anzahl Anmeldungen', 'webling') ?></th>
<td>
- <input type="number" name="max_signups" placeholder="0" min="0" value="<?php echo esc_attr($data['max_signups']); ?>" class="small-text"> <?php echo __('Anmeldungen', 'webling') ?>
- <p class="description"><?php echo __('Wenn die maximale Anzahl Mitglieder in der oben gewählten Mitgliedergruppe erreicht ist, werden keine Anmeldungen mehr entgegengenommen. Wenn du Mitglieder in Webling aus der Gruppe entfernst, werden wieder Plätze frei.', 'webling') ?></p>
- <p class="description"><?php echo __('0 = keine maximale Anzahl', 'webling') ?></p>
+ <input type="number" name="max_signups" placeholder="0" min="0" value="<?php echo esc_attr($data['max_signups']); ?>" class="small-text"> <?php echo esc_html__('Anmeldungen', 'webling') ?>
+ <p class="description"><?php echo esc_html__('Wenn die maximale Anzahl Mitglieder in der oben gewählten Mitgliedergruppe erreicht ist, werden keine Anmeldungen mehr entgegengenommen. Wenn du Mitglieder in Webling aus der Gruppe entfernst, werden wieder Plätze frei.', 'webling') ?></p>
+ <p class="description"><?php echo esc_html__('0 = keine maximale Anzahl', 'webling') ?></p>
<?php
$membergroup = WeblingApiHelper::Instance()->cache()->getObject('membergroup', $data['group_id']);
if ($membergroup && isset($membergroup['children'])) {
- echo '<p class="description">' . __('Aktuelle Anzahl Anmeldungen:', 'webling'). ' ' . count($membergroup['children']) . '</p>';
+ echo '<p class="description">' . esc_html__('Aktuelle Anzahl Anmeldungen:', 'webling'). ' ' . count($membergroup['children']) . '</p>';
}
?>
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Text wenn Anmeldung voll', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Text wenn Anmeldung voll', 'webling') ?></th>
<td>
<?php wp_editor($data['max_signups_text'], 'max_signups_text'); ?>
- <p class="description"><?php echo __('Dieser Text wird dem Besucher angezeigt, wenn die maximale Anzahl Anmeldungen erreicht ist.', 'webling') ?></p>
+ <p class="description"><?php echo esc_html__('Dieser Text wird dem Besucher angezeigt, wenn die maximale Anzahl Anmeldungen erreicht ist.', 'webling') ?></p>
</td>
</tr>
</table>
</div>
<div id="webling_form_emails" style="display: none">
- <h2 class="title"><?php echo __('E-Mail Benachrichtigung an Admin', 'webling') ?></h2>
- <p><?php echo __('Bei jeder Anmeldung über das Formular können die übermittelten Daten an eine E-Mail Adresse zur Info gesendet werden.', 'webling') ?></p>
+ <h2 class="title"><?php echo esc_html__('E-Mail Benachrichtigung an Admin', 'webling') ?></h2>
+ <p><?php echo esc_html__('Bei jeder Anmeldung über das Formular können die übermittelten Daten an eine E-Mail Adresse zur Info gesendet werden.', 'webling') ?></p>
<table class="form-table">
<tr>
- <th scope="row"><?php echo __('Benachrichtigung senden an', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Benachrichtigung senden an', 'webling') ?></th>
<td>
- <input type="text" placeholder="<?php echo __('E-Mail Adresse', 'webling') ?>" name="notification_email" value="<?php echo esc_attr($data['notification_email']); ?>" class="regular-text">
- <p class="description"><?php echo __('Eine E-Mail mit den übermittelten Formulardaten wird an diese Adresse versandt. Mehrere E-Mail Adressen mit Komma trennen.', 'webling') ?></p>
+ <input type="text" placeholder="<?php echo esc_attr__('E-Mail Adresse', 'webling') ?>" name="notification_email" value="<?php echo esc_attr($data['notification_email']); ?>" class="regular-text">
+ <p class="description"><?php echo esc_html__('Eine E-Mail mit den übermittelten Formulardaten wird an diese Adresse versandt. Mehrere E-Mail Adressen mit Komma trennen.', 'webling') ?></p>
</td>
</tr>
</table>
- <h2 class="title"><?php echo __('E-Mail Bestätigung an Besucher', 'webling') ?></h2>
+ <h2 class="title"><?php echo esc_html__('E-Mail Bestätigung an Besucher', 'webling') ?></h2>
<p></p>
<table class="form-table">
<tr>
- <th scope="row"><?php echo __('E-Mail Bestätigung an Besucher senden', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('E-Mail Bestätigung an Besucher senden', 'webling') ?></th>
<td>
<fieldset>
<label for="confirmation_email_enabled">
<input name="confirmation_email_enabled" onclick="webling_toggle_confirmation_settings()" type="checkbox" id="confirmation_email_enabled" <?php echo ($data['confirmation_email_enabled'] ? 'checked' : ''); ?>>
- <?php echo __('Eine Bestätigung an den Besucher senden', 'webling') ?>
+ <?php echo esc_html__('Eine Bestätigung an den Besucher senden', 'webling') ?>
</label>
</fieldset>
- <p class="description"><?php echo __('Eine Bestätigung per E-Mail an den Besucher senden wenn er das Formular abgeschickt hat.', 'webling') ?></p>
+ <p class="description"><?php echo esc_html__('Eine Bestätigung per E-Mail an den Besucher senden wenn er das Formular abgeschickt hat.', 'webling') ?></p>
</td>
</tr>
<tr class="webling_confirmation_settings">
- <th scope="row"><?php echo __('E-Mail Formular Feld', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('E-Mail Formular Feld', 'webling') ?></th>
<td>
<script type="text/javascript">
var preselected_confirmation_email_webling_field = <?php echo intval($data['confirmation_email_webling_field']); ?>;
</script>
<select id="confirmation_email_webling_field" name="confirmation_email_webling_field" class="regular-text"></select>
- <p class="description" id="confirmation_email_webling_field_error" style="color: red;"><?php echo __('Kein E-Mail Feld im Formular gefunden. Füge ein E-Mail Feld zum Formular hinzu um diese Funktion zu nutzen.', 'webling') ?></p>
- <p class="description"><?php echo __('Wähle das E-Mail Feld in deinem Formular. Der Besucher erhält eine Bestätigung an die Adresse die in das hier ausgewählte Feld eingegeben wurde. Das E-Mail wird nur versandt, wenn die Adresse ausgefüllt wurde und gültig ist.', 'webling') ?></p>
+ <p class="description" id="confirmation_email_webling_field_error" style="color: red;"><?php echo esc_html__('Kein E-Mail Feld im Formular gefunden. Füge ein E-Mail Feld zum Formular hinzu um diese Funktion zu nutzen.', 'webling') ?></p>
+ <p class="description"><?php echo esc_html__('Wähle das E-Mail Feld in deinem Formular. Der Besucher erhält eine Bestätigung an die Adresse die in das hier ausgewählte Feld eingegeben wurde. Das E-Mail wird nur versandt, wenn die Adresse ausgefüllt wurde und gültig ist.', 'webling') ?></p>
</td>
</tr>
<tr class="webling_confirmation_settings">
- <th scope="row"><?php echo __('E-Mail Betreff', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('E-Mail Betreff', 'webling') ?></th>
<td>
- <input type="text" placeholder="<?php echo __('E-Mail Betreff', 'webling') ?>" name="confirmation_email_subject" value="<?php echo esc_attr($data['confirmation_email_subject']); ?>" class="regular-text">
- <p class="description"><?php echo __('Der Betreff der E-Mail an den Besucher.', 'webling') ?></p>
+ <input type="text" placeholder="<?php echo esc_attr__('E-Mail Betreff', 'webling') ?>" name="confirmation_email_subject" value="<?php echo esc_attr($data['confirmation_email_subject']); ?>" class="regular-text">
+ <p class="description"><?php echo esc_html__('Der Betreff der E-Mail an den Besucher.', 'webling') ?></p>
</td>
</tr>
<tr class="webling_confirmation_settings">
- <th scope="row"><?php echo __('E-Mail Text', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('E-Mail Text', 'webling') ?></th>
<td>
- <textarea placeholder="<?php echo __('E-Mail Bestätigungstext', 'webling') ?>" name="confirmation_email_text" style="width: 100%; height: 300px"><?php echo esc_html($data['confirmation_email_text']); ?></textarea>
- <p class="description"><?php echo __('Der E-Mail-Text der an den Besucher gesendet wird. Du kannst in diesem Text Platzhalter im Format <code>[[Feldname]]</code> verwenden. Achtung: Verwende den Feldnamen in Webling und nicht den Feldnamen aus dem Formular!', 'webling') ?></p>
+ <textarea placeholder="<?php echo esc_attr__('E-Mail Bestätigungstext', 'webling') ?>" name="confirmation_email_text" style="width: 100%; height: 300px"><?php echo esc_html($data['confirmation_email_text']); ?></textarea>
+ <p class="description"><?php echo esc_html__('Der E-Mail-Text der an den Besucher gesendet wird. Du kannst in diesem Text Platzhalter im Format <code>[[Feldname]]</code> verwenden. Achtung: Verwende den Feldnamen in Webling und nicht den Feldnamen aus dem Formular!', 'webling') ?></p>
</td>
</tr>
</table>
@@ -230,18 +231,18 @@
<div id="postbox-container-1" class="postbox-container">
<div id="side-sortables" class="meta-box-sortables">
<div id="submitdiv" class="postbox">
- <h2 class="hndle"><span><?php echo __('Veröffentlichen', 'webling') ?></span></h2>
+ <h2 class="hndle"><span><?php echo esc_html__('Veröffentlichen', 'webling') ?></span></h2>
<div class="inside">
<div class="submitbox" id="submitpost">
<div id="misc-publishing-actions">
<div class="misc-pub-section">
<?php if ($id) { ?>
- <p><?php echo __('Füge diesen Shortcode in eine Seite oder einen Artikel ein um dieses Formular anzuzeigen:', 'webling') ?></p>
+ <p><?php echo esc_html__('Füge diesen Shortcode in eine Seite oder einen Artikel ein um dieses Formular anzuzeigen:', 'webling') ?></p>
<p>
<input title="Shortcode" class="shortcode" type="text" value='[webling_form id="<?php echo $id; ?>"]'>
</p>
<?php } else { ?>
- <p><?php echo __('Nach dem Erstellen wird ein Shortcode erstellt, mit welchem du das Formular auf einer Seite oder in einem Artikel anzeigen kannst.', 'webling') ?></p>
+ <p><?php echo esc_html__('Nach dem Erstellen wird ein Shortcode erstellt, mit welchem du das Formular auf einer Seite oder in einem Artikel anzeigen kannst.', 'webling') ?></p>
<?php } ?>
</div>
</div>
@@ -250,7 +251,7 @@
<a class="submitdelete deletion" href="http://localhost/webling/wordpress-4.7.0/wp-admin/post.php?post=1&action=trash&_wpnonce=970d6cb90f">Move to Trash</a>
</div-->
<div id="publishing-action">
- <input name="save" type="submit" class="button button-primary button-large" id="publish" value="<?php echo __('Speichern', 'webling') ?>">
+ <input name="save" type="submit" class="button button-primary button-large" id="publish" value="<?php echo esc_attr__('Speichern', 'webling') ?>">
</div>
<div class="clear"></div>
</div>
@@ -258,9 +259,9 @@
</div>
</div>
<div id="webling_fields_div" class="postbox">
- <h2 class="hndle"><span><?php echo __('Felder', 'webling') ?></span></h2>
+ <h2 class="hndle"><span><?php echo esc_html__('Felder', 'webling') ?></span></h2>
<div class="inside">
- <p><?php echo __('Ziehe diese Felder in den Hauptbereich um sie zum Formular hinzuzufügen:', 'webling') ?></p>
+ <p><?php echo esc_html__('Ziehe diese Felder in den Hauptbereich um sie zum Formular hinzuzufügen:', 'webling') ?></p>
<ul id="sortable_side" class="connectedSortable">
<?php
foreach ($member_properties as $config) {
@@ -271,7 +272,7 @@
}
}
}
- ?>
+ ?>
</ul>
</div>
</div>
@@ -342,40 +343,40 @@
switch($config['datatype']) {
case 'text':
if (isset($config['type']) && $config['type'] == 'email') {
- return __('Text, E-Mail', 'webling');
+ return esc_html__('Text, E-Mail', 'webling');
} else {
- return __('Text', 'webling');
+ return esc_html__('Text', 'webling');
}
break;
case 'longtext':
- return __('Mehrzeiliger Text', 'webling');
+ return esc_html__('Mehrzeiliger Text', 'webling');
break;
case 'int':
- return __('Zahl', 'webling');
+ return esc_html__('Zahl', 'webling');
break;
case 'numeric':
- return __('Betrag', 'webling');
+ return esc_html__('Betrag', 'webling');
break;
case 'bool':
- return __('Checkbox', 'webling');
+ return esc_html__('Checkbox', 'webling');
break;
case 'enum':
- return __('Auswahlfeld', 'webling');
+ return esc_html__('Auswahlfeld', 'webling');
break;
case 'multienum':
- return __('Mehrfachauswahlfeld', 'webling');
+ return esc_html__('Mehrfachauswahlfeld', 'webling');
break;
case 'date':
- return __('Datum', 'webling');
+ return esc_html__('Datum', 'webling');
break;
case 'image':
- return __('Bild', 'webling');
+ return esc_html__('Bild', 'webling');
break;
case 'file':
- return __('Datei', 'webling');
+ return esc_html__('Datei', 'webling');
break;
case 'autoincrement':
- return __('Mitglieder ID', 'webling');
+ return esc_html__('Mitglieder ID', 'webling');
break;
default:
return ucfirst($config['datatype']);
@@ -413,68 +414,68 @@
</div>
<div class="widget-inside">
<div class="widget-content">
- <input type="hidden" name="fields[<?php echo $fieldid; ?>][webling_field_id]" value="<?php echo $config['id']; ?>" class="fieldid">
- <input type="hidden" name="fields[<?php echo $fieldid; ?>][order]" class="order" value="0">
+ <input type="hidden" name="fields[<?php echo esc_attr($fieldid); ?>][webling_field_id]" value="<?php echo esc_attr($config['id']); ?>" class="fieldid">
+ <input type="hidden" name="fields[<?php echo esc_attr($fieldid); ?>][order]" class="order" value="0">
<table class="form-table">
<tr>
- <th scope="row"><?php echo __('Feld in Webling', 'webling') ?></th>
- <td><?php echo esc_html($name); ?> <span class="description">(<?php echo self::translated_datatype($config) ?>)</span></td>
+ <th scope="row"><?php echo esc_html__('Feld in Webling', 'webling') ?></th>
+ <td><?php echo esc_html($name); ?> <span class="description">(<?php echo esc_html(self::translated_datatype($config)) ?>)</span></td>
</tr>
<tr <?php if($type == 'multienum') echo 'style="display: none;"'; ?>>
- <th scope="row"><?php echo __('Pflichtfeld', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Pflichtfeld', 'webling') ?></th>
<td>
<label>
- <input name="fields[<?php echo $fieldid; ?>][required]" type="checkbox" value="1" <?php echo ($data['required'] ? 'checked' : ''); ?>>
- <?php echo __('Feld muss ausgefüllt werden', 'webling') ?>
+ <input name="fields[<?php echo esc_attr($fieldid); ?>][required]" type="checkbox" value="1" <?php echo ($data['required'] ? 'checked' : ''); ?>>
+ <?php echo esc_html__('Feld muss ausgefüllt werden', 'webling') ?>
</label>
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Feldname', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Feldname', 'webling') ?></th>
<td>
- <input type="text" name="fields[<?php echo $fieldid; ?>][field_name]" value="<?php echo esc_attr($data['field_name']); ?>" placeholder="<?php echo __('Name des Formularfeldes', 'webling') ?>" class="regular-text fieldname">
+ <input type="text" name="fields[<?php echo esc_attr($fieldid); ?>][field_name]" value="<?php echo esc_attr($data['field_name']); ?>" placeholder="<?php echo esc_attr__('Name des Formularfeldes', 'webling') ?>" class="regular-text fieldname">
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Position des Feldnamens', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Position des Feldnamens', 'webling') ?></th>
<td>
- <select name="fields[<?php echo $fieldid; ?>][field_name_position]">
- <option value="TOP" <?php echo ($data['field_name_position'] == 'TOP' ? 'selected' : ''); ?>><?php echo __('Oberhalb', 'webling') ?></option>
- <option value="LEFT" <?php echo ($data['field_name_position'] == 'LEFT' ? 'selected' : ''); ?>><?php echo __('Links', 'webling') ?></option>
- <option value="HIDDEN" <?php echo ($data['field_name_position'] == 'HIDDEN' ? 'selected' : ''); ?>><?php echo __('Feldnamen nicht anzeigen', 'webling') ?></option>
+ <select name="fields[<?php echo esc_attr($fieldid); ?>][field_name_position]">
+ <option value="TOP" <?php echo ($data['field_name_position'] == 'TOP' ? 'selected' : ''); ?>><?php echo esc_html__('Oberhalb', 'webling') ?></option>
+ <option value="LEFT" <?php echo ($data['field_name_position'] == 'LEFT' ? 'selected' : ''); ?>><?php echo esc_html__('Links', 'webling') ?></option>
+ <option value="HIDDEN" <?php echo ($data['field_name_position'] == 'HIDDEN' ? 'selected' : ''); ?>><?php echo esc_html__('Feldnamen nicht anzeigen', 'webling') ?></option>
</select>
</td>
</tr>
<tr <?php if(in_array($type, array('date','multienum', 'file', 'image'))) echo 'style="display: none;"'; ?>>
<th scope="row">
<?php
- if($type == 'bool') echo __('Beschriftung', 'webling');
- else echo __('Platzhalter', 'webling');
+ if($type == 'bool') echo esc_html__('Beschriftung', 'webling');
+ else echo esc_html__('Platzhalter', 'webling');
?>
</th>
<td>
- <input type="text" name="fields[<?php echo $fieldid; ?>][placeholder_text]" value="<?php echo esc_attr($data['placeholder_text']); ?>" placeholder="<?php
- if($type == 'bool') echo __('Beschriftung der Checkbox', 'webling');
- else echo __('Platzhalter text', 'webling');
+ <input type="text" name="fields[<?php echo esc_attr($fieldid); ?>][placeholder_text]" value="<?php echo esc_attr($data['placeholder_text']); ?>" placeholder="<?php
+ if($type == 'bool') echo esc_attr__('Beschriftung der Checkbox', 'webling');
+ else echo esc_attr__('Platzhalter text', 'webling');
?>" class="regular-text">
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('Beschreibungstext', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('Beschreibungstext', 'webling') ?></th>
<td>
- <input type="text" name="fields[<?php echo $fieldid; ?>][description_text]" value="<?php echo esc_attr($data['description_text']); ?>" placeholder="<?php echo __('Kurzer Hilfe- oder Beschreibungstext', 'webling') ?>" class="regular-text">
+ <input type="text" name="fields[<?php echo esc_attr($fieldid); ?>][description_text]" value="<?php echo esc_attr($data['description_text']); ?>" placeholder="<?php echo esc_attr__('Kurzer Hilfe- oder Beschreibungstext', 'webling') ?>" class="regular-text">
</td>
</tr>
<tr <?php if(!in_array($type, array('enum','multienum'))) echo 'style="display: none;"'; ?>>
- <th scope="row"><?php echo __('Mögliche Auswahlwerte', 'webling'); ?></th>
+ <th scope="row"><?php echo esc_html__('Mögliche Auswahlwerte', 'webling'); ?></th>
<td>
- <?php echo __('Standardmässig werden alle Auswahlwerte angezeigt.', 'webling'); ?><br>
- <?php echo __('Du kannst die Wahlmöglichkeiten einschränken, indem du hier nur die Auswahlwerte anwählst, welche angezeigt werden sollen:', 'webling'); ?>
+ <?php echo esc_html__('Standardmässig werden alle Auswahlwerte angezeigt.', 'webling'); ?><br>
+ <?php echo esc_html__('Du kannst die Wahlmöglichkeiten einschränken, indem du hier nur die Auswahlwerte anwählst, welche angezeigt werden sollen:', 'webling'); ?>
<div class="webling-fields-selectable-options">
<?php
if (isset($config['values']) && is_array($config['values'])) {
foreach ($config['values'] as $option) {
- echo '<div><label><input type="checkbox" name="fields['.$fieldid.'][select_options]['.$option['id'].']" '.(in_array($option['id'], $data['select_options']) ? 'checked' : '').'> ' . esc_html($option['value']) . '</label></div>';
+ echo '<div><label><input type="checkbox" name="fields['.esc_attr($fieldid).'][select_options]['.esc_attr($option['id']).']" '.(in_array($option['id'], $data['select_options']) ? 'checked' : '').'> ' . esc_html($option['value']) . '</label></div>';
}
}
?>
@@ -482,16 +483,16 @@
</td>
</tr>
<tr>
- <th scope="row"><?php echo __('CSS Klasse', 'webling') ?></th>
+ <th scope="row"><?php echo esc_html__('CSS Klasse', 'webling') ?></th>
<td>
- <input type="text" name="fields[<?php echo $fieldid; ?>][class]" value="<?php echo esc_attr($data['class']); ?>" placeholder="<?php echo __('CSS Klasse', 'webling') ?>" class="regular-text">
+ <input type="text" name="fields[<?php echo esc_attr($fieldid); ?>][class]" value="<?php echo esc_attr($data['class']); ?>" placeholder="<?php echo esc_attr__('CSS Klasse', 'webling') ?>" class="regular-text">
</td>
</tr>
</table>
<div class="widget-control-actions">
<div class="alignleft">
- <a class="widget-control-remove" href="#remove" onclick="return webling_remove_field('<?php echo $fieldid; ?>')"><?php echo __('Feld entfernen', 'webling') ?></a> |
- <a class="widget-control-close" href="#close" onclick="return webling_toggle_field('<?php echo $fieldid; ?>')"><?php echo __('Schliessen', 'webling') ?></a>
+ <a class="widget-control-remove" href="#remove" onclick="return webling_remove_field('<?php echo esc_js($fieldid); ?>')"><?php echo esc_html__('Feld entfernen', 'webling') ?></a> |
+ <a class="widget-control-close" href="#close" onclick="return webling_toggle_field('<?php echo esc_js($fieldid); ?>')"><?php echo esc_html__('Schliessen', 'webling') ?></a>
</div>
<br class="clear">
</div>
--- a/webling/src/admin/pages/form_list.php
+++ b/webling/src/admin/pages/form_list.php
@@ -10,7 +10,7 @@
<div class="wrap">
<h2>
Anmeldeformulare
- <a href="<?php echo admin_url( 'admin.php?page=webling_page_form_edit' ); ?>" class="page-title-action"><?php echo esc_html(__('Neues Formular', 'webling')); ?></a>
+ <a href="<?php echo admin_url( 'admin.php?page=webling_page_form_edit' ); ?>" class="page-title-action"><?php echo esc_html__('Neues Formular', 'webling'); ?></a>
</h2>
<div id="poststuff">
@@ -19,6 +19,7 @@
<div class="meta-box-sortables ui-sortable">
<form method="post">
<?php
+ wp_nonce_field('bulk-' . $forms->_args['plural']);
$forms->display(); ?>
</form>
</div>
--- a/webling/src/admin/pages/memberlist_edit.php
+++ b/webling/src/admin/pages/memberlist_edit.php
@@ -62,9 +62,9 @@
echo '<div class="wrap webling-admin">';
if ($id) {
- echo '<h2>'.__('Mitgliederliste bearbeiten', 'webling').' (ID: '.$id.')</h2>';
+ echo '<h2>'.esc_html(__('Mitgliederliste bearbeiten', 'webling')).' (ID: '.intval($id).')</h2>';
} else {
- echo '<h2>'.__('Mitgliederliste erstellen', 'webling').'</h2>';
+ echo '<h2>'.esc_html(__('Mitgliederliste erstellen', 'webling')).'</h2>';
}
?>
@@ -72,6 +72,7 @@
<form action="admin-post.php" method="post">
<input type="hidden" name="action" value="save_memberlist">
<input type="hidden" name="list_id" value="<?php echo $data['id']; ?>">
+ <?php wp_nonce_field('webling_save_memberlist'); ?>
<div id="poststuff">
<div id="post-body" class="metabox-holder columns-2">
@@ -85,48 +86,48 @@
<div class="bodywrap">
- <h3><?php echo __('Mitglieder anzeigen', 'webling') ?></h3>
+ <h3><?php echo esc_html__('Mitglieder anzeigen', 'webling') ?></h3>
<div>
<select name="type" id="memberlist_type" onchange="webling_memberlist_type_changed()">
- <option value="ALL" <?php echo ($data['type'] == 'ALL' ? 'selected' : '') ?>><?php echo __('Alle Mitglieder') ?></option>
- <option value="GROUPS" <?php echo ($data['type'] == 'GROUPS' ? 'selected' : '') ?>><?php echo __('Gruppen wählen') ?></option>
- <option value="SAVEDSEARCH" <?php echo ($data['type'] == 'SAVEDSEARCH' ? 'selected' : '') ?>><?php echo __('Gespeicherte Suche wählen') ?></option>
+ <option value="ALL" <?php echo ($data['type'] == 'ALL' ? 'selected' : '') ?>><?php echo esc_html__('Alle Mitglieder', 'webling') ?></option>
+ <option value="GROUPS" <?php echo ($data['type'] == 'GROUPS' ? 'selected' : '') ?>><?php echo esc_html__('Gruppen wählen', 'webling') ?></option>
+ <option value="SAVEDSEARCH" <?php echo ($data['type'] == 'SAVEDSEARCH' ? 'selected' : '') ?>><?php echo esc_html__('Gespeicherte Suche wählen', 'webling') ?></option>
</select>
</div>
<div id="groupselector" style="display: none">
- <h4><?php echo __('Mitglieder aus folgenden Gruppen anzeigen:', 'webling') ?></h4>
+ <h4><?php echo esc_html__('Mitglieder aus folgenden Gruppen anzeigen:', 'webling') ?></h4>
<?php echo self::groupselector(unserialize($data['groups'])) ?>
</div>
<div id="savedsearchselector" style="display: none">
- <h4><?php echo __('Mitglieder aus gespeicherter Suche anzeigen:', 'webling') ?></h4>
+ <h4><?php echo esc_html__('Mitglieder aus gespeicherter Suche anzeigen:', 'webling') ?></h4>
<?php echo self::savedsearchselector($data['savedsearch']) ?>
</div>
- <h3><?php echo __('Darstellung', 'webling') ?></h3>
+ <h3><?php echo esc_html__('Darstellung', 'webling') ?></h3>
<div>
<fieldset>
<p>
<label onclick="webling_memberlist_design_updated()">
<input name="design" type="radio" value="LIST" <?php echo ($data['design'] == 'LIST' ? 'checked="checked"' : '') ?>>
- <?php echo __('Einfache Liste') ?>
+ <?php echo esc_html__('Einfache Liste', 'webling') ?>
</label><br>
<label onclick="webling_memberlist_design_updated()">
<input name="design" type="radio" value="CUSTOM" <?php echo ($data['design'] == 'CUSTOM' ? 'checked="checked"' : '') ?>>
- <?php echo __('Eigenes Design (HTML)') ?>
+ <?php echo esc_html__('Eigenes Design (HTML)', 'webling') ?>
</label>
</p>
</fieldset>
</div>
<div id="webling_design_custom" style="display: none">
- <h3><?php echo __('Eigene Designvorlage', 'webling') ?></h3>
- <textarea placeholder="<?php echo __('HTML Template', 'webling') ?>" name="custom_template" style="width: 100%; height: 300px"><?php echo esc_html($data['custom_template']); ?></textarea>
+ <h3><?php echo esc_html__('Eigene Designvorlage', 'webling') ?></h3>
+ <textarea placeholder="<?php echo esc_attr__('HTML Template', 'webling') ?>" name="custom_template" style="width: 100%; height: 300px"><?php echo esc_html($data['custom_template']); ?></textarea>
<a name="placeholders"></a>
<p class="description">
- <?php echo __('Dieses HTML-Template wird für jedes Mitglied auf der Seite einmal angezeigt. Du kannst in diesem Code Platzhalter im Format <code>[[Feldname]]</code> verwenden.', 'webling') ?>
- <a href="#placeholders" onclick="jQuery('#webling_design_placeholders').toggle()"><?php echo __('Mögliche Platzhalter anzeigen', 'webling') ?></a>
+ <?php echo esc_html__('Dieses HTML-Template wird für jedes Mitglied auf der Seite einmal angezeigt. Du kannst in diesem Code Platzhalter im Format <code>[[Feldname]]</code> verwenden.', 'webling') ?>
+ <a href="#placeholders" onclick="jQuery('#webling_design_placeholders').toggle()"><?php echo esc_html__('Mögliche Platzhalter anzeigen', 'webling') ?></a>
</p>
<div id="webling_design_placeholders" class="webling_design_placeholders_description" style="display: none">
@@ -137,21 +138,21 @@
}
?>
</ul>
- <?php echo __('Um ein Bild anzuzeigen kannst du folgenden Code verwenden:', 'webling') ?><br>
+ <?php echo esc_html__('Um ein Bild anzuzeigen kannst du folgenden Code verwenden:', 'webling') ?><br>
<code><img src="[[Platzhalter]]" /></code><br>
<br>
- <?php echo __('Du kannst auch die gewünschte Grösse angeben:', 'webling') ?><br>
+ <?php echo esc_html__('Du kannst auch die gewünschte Grösse angeben:', 'webling') ?><br>
<code><img src="[[Bild@width=100]]" /></code><br>
<code><img src="[[Bild@height=200]]" /></code><br>
<code><img src="[[Bild@width=150,height=150]]" /></code><br>
<br>
- <?php echo __('Beispiel um ein Bild auch auf hochaufgelösten Bildschirmen scharf darzustellen:', 'webling') ?><br>
+ <?php echo esc_html__('Beispiel um ein Bild auch auf hochaufgelösten Bildschirmen scharf darzustellen:', 'webling') ?><br>
<code><img src="[[Mitgliederbild@width=200,height=200]]" style="width: 100px;"></code><br>
</div>
</div>
<div id="webling_design_list">
- <h3><?php echo __('Angezeigte Felder und Reihenfolge festlegen', 'webling') ?></h3>
+ <h3><?php echo esc_html__('Angezeigte Felder und Reihenfolge festlegen', 'webling') ?></h3>
<input type="hidden" id="fields" name="fields" value="<?php echo $data['fields']; ?>">
<ul id="sortable">
<?php
@@ -194,21 +195,21 @@
<div id="postbox-container-1" class="postbox-container">
<div id="side-sortables" class="meta-box-sortables">
<div id="submitdiv" class="postbox">
- <h2 class="hndle"><span><?php echo __('Veröffentlichen', 'webling') ?></span></h2>
+ <h2 class="hndle"><span><?php echo esc_html__('Veröffentlichen', 'webling') ?></span></h2>
<div class="inside">
<div class="submitbox" id="submitpost">
<div id="misc-publishing-actions">
<div class="misc-pub-section">
<?php if ($id) { ?>
<p>
- <b><?php echo __('Shortcode', 'webling') ?></b>
+ <b><?php echo esc_html__('Shortcode', 'webling') ?></b>
</p>
- <p><?php echo __('Füge diesen Shortcode in eine Seite oder einen Artikel ein um diese Liste anzuzeigen:', 'webling') ?></p>
+ <p><?php echo esc_html__('Füge diesen Shortcode in eine Seite oder einen Artikel ein um diese Liste anzuzeigen:', 'webling') ?></p>
<p>
- <input title="Shortcode" class="shortcode" type="text" value='[webling_memberlist id="<?php echo $id; ?>"]'>
+ <input title="Shortcode" class="shortcode" type="text" value='[webling_memberlist id="<?php echo intval($id); ?>"]'>
</p>
<?php } else { ?>
- <p><?php echo __('Nach dem Erstellen wird ein Shortcode erstellt, mit welchem du die Liste auf einer Seite oder in einem Artikel anzeigen kannst.', 'webling') ?></p>
+ <p><?php echo esc_html__('Nach dem Erstellen wird ein Shortcode erstellt, mit welchem du die Liste auf einer Seite oder in einem Artikel anzeigen kannst.', 'webling') ?></p>
<?php } ?>
</div>
</div>
@@ -217,7 +218,7 @@
<a class="submitdelete deletion" href="http://localhost/webling/wordpress-4.7.0/wp-admin/post.php?post=1&action=trash&_wpnonce=970d6cb90f">Move to Trash</a>
</div-->
<div id="publishing-action">
- <input name="save" type="submit" class="button button-primary button-large" id="publish" value="<?php echo __('Speichern', 'webling') ?>">
+ <input name="save" type="submit" class="button button-primary button-large" id="publish" value="<?php echo esc_attr__('Speichern', 'webling') ?>">
</div>
<div class="clear"></div>
</div>
@@ -225,22 +226,22 @@
</div>
</div>
<div id="optionsdiv" class="postbox">
- <h2 class="hndle"><span><?php echo __('Optionen', 'webling') ?></span></h2>
+ <h2 class="hndle"><span><?php echo esc_html__('Optionen', 'webling') ?></span></h2>
<div class="inside">
<p class="post-attributes-label-wrapper"><label class="post-attributes-label" for="sortfield">
- <?php echo __('Sortieren nach', 'webling') ?>
+ <?php echo esc_html__('Sortieren nach', 'webling') ?>
</label></p>
<?php echo self::fieldselector($data['sortfield'], 'sortfield'); ?>
<select title="sort order" name="sortorder">
- <option value="ASC" <?php echo ($data['sortorder'] == 'ASC' ? 'selected' : ''); ?>><?php echo __('aufsteigend [A-Z]', 'webling') ?></option>
- <option value="DESC" <?php echo ($data['sortorder'] == 'DESC' ? 'selected' : ''); ?>><?php echo __('absteigend [Z-A]', 'webling') ?></option>
+ <option value="ASC" <?php echo ($data['sortorder'] == 'ASC' ? 'selected' : ''); ?>><?php echo esc_html__('aufsteigend [A-Z]', 'webling') ?></option>
+ <option value="DESC" <?php echo ($data['sortorder'] == 'DESC' ? 'selected' : ''); ?>><?php echo esc_html__('absteigend [Z-A]', 'webling') ?></option>
</select>
<p class="post-attributes-label-wrapper"><label class="post-attributes-label" for="sortfield">
- <?php echo __('Eigene CSS Klasse', 'webling') ?>
+ <?php echo esc_html__('Eigene CSS Klasse', 'webling') ?>
</label></p>
- <input type="text" placeholder="<?php echo __('CSS Klasse', 'webling') ?>" name="class" value="<?php echo esc_attr($data['class']); ?>">
- <p><?php echo __('Für eigene Designanpassungen', 'webling') ?></p>
+ <input type="text" placeholder="<?php echo esc_attr__('CSS Klasse', 'webling') ?>" name="class" value="<?php echo esc_attr($data['class']); ?>">
+ <p><?php echo esc_html__('Für eigene Designanpassungen', 'webling') ?></p>
</div>
</div>
</div>
@@ -307,7 +308,7 @@
}
$html .= '</select>';
} else {
- $html = '<div>'. __('Keine öffentliche gespeicherte Suche gefunden.', 'webling') . '</div>';
+ $html = '<div>'. esc_html__('Keine öffentliche gespeicherte Suche gefunden.', 'webling') . '</div>';
}
return $html;
}
--- a/webling/src/admin/pages/memberlist_list.php
+++ b/webling/src/admin/pages/memberlist_list.php
@@ -10,7 +10,7 @@
<div class="wrap">
<h2>
Mitgliederlisten
- <a href="<?php echo admin_url( 'admin.php?page=webling_page_memberlist_edit' ); ?>" class="page-title-action"><?php echo esc_html(__('Neue Liste', 'webling')); ?></a>
+ <a href="<?php echo admin_url( 'admin.php?page=webling_page_memberlist_edit' ); ?>" class="page-title-action"><?php echo esc_html__('Neue Liste', 'webling'); ?></a>
</h2>
<div id="poststuff">
@@ -19,6 +19,7 @@
<div class="meta-box-sortables ui-sortable">
<form method="post">
<?php
+ wp_nonce_field('bulk-' . $memberlist->_args['plural']);
$memberlist->display(); ?>
</form>
</div>
--- a/weblin