printCommentForm() in your script where you
* wish the comment items to appear.
*
* The plugin uses %ZENFOLDER%/%PLUGIN_FOLDER%/comment_form/comment_form.php.
* However, you may override this form by placing a script of the same name in a similar folder in your theme.
* This will allow you to customize the appearance of the comments on your site.
*
* There are several options to tune what the plugin will do.
*
* @author Stephen Billard (sbillard)
* @package comment-form
*/
$plugin_is_filter = 5 | CLASS_PLUGIN;
$plugin_description = gettext("Provides a unified comment handling facility.");
$plugin_author = "Stephen Billard (sbillard)";
$plugin_category = gettext('Misc');
$option_interface = 'comment_form';
zp_register_filter('admin_toolbox_global', 'comment_form::toolbox');
require_once(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/comment_form/class-comment.php');
require_once(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/comment_form/functions.php');
if (OFFSET_PATH) {
zp_register_filter('admin_overview', 'comment_form_print10Most');
zp_register_filter('admin_tabs', 'comment_form::admin_tabs');
} else {
zp_register_filter('handle_comment', 'comment_form_postcomment');
zp_register_filter('object_addComment', 'comment_form_addComment');
if (getOption('comment_form_pagination')) {
zp_register_filter('theme_head', 'comment_form_PaginationJS');
}
if (getOption('tinymce4_comments')) {
require_once(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/tinymce4.php');
zp_register_filter('theme_head', 'comment_form_visualEditor');
}
}
class comment_form {
/**
* class instantiation function
*
*/
function __construct() {
setOptionDefault('email_new_comments', 1);
setOptionDefault('comment_name_required', 'required');
setOptionDefault('comment_email_required', 'required');
setOptionDefault('comment_web_required', 1);
setOptionDefault('Use_Captcha', false);
setOptionDefault('comment_form_addresses', 0);
setOptionDefault('comment_form_require_addresses', 0);
setOptionDefault('comment_form_members_only', 0);
setOptionDefault('comment_form_albums', 1);
setOptionDefault('comment_form_images', 1);
setOptionDefault('comment_form_articles', 1);
setOptionDefault('comment_form_pages', 1);
setOptionDefault('comment_form_rss', 1);
setOptionDefault('comment_form_private', 1);
setOptionDefault('comment_form_anon', 1);
setOptionDefault('comment_form_showURL', 1);
setOptionDefault('comment_form_comments_per_page', 10);
setOptionDefault('comment_form_pagination', true);
setOptionDefault('comment_form_toggle', 1);
setOptionDefault('tinymce4_comments', null);
setOptionDefault('comment_form_dataconfirmation', 0);
}
/**
* Reports the supported options
*
* @return array
*/
function getOptionsSupported() {
global $_zp_captcha;
require_once(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/tinymce4.php');
$checkboxes = array(
gettext('Albums') => 'comment_form_albums',
gettext('Images') => 'comment_form_images');
if (extensionEnabled('zenpage')) {
$checkboxes = array_merge($checkboxes, array(
gettext('Pages') => 'comment_form_pages',
gettext('News') => 'comment_form_articles'));
}
$configarray = getTinyMCE4ConfigFiles('comment');
$options = array(
gettext('Enable comment notification') => array(
'key' => 'email_new_comments',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 0,
'desc' => gettext('Email the Admin when new comments are posted')),
gettext('Name field') => array(
'key' => 'comment_name_required',
'type' => OPTION_TYPE_RADIO,
'order' => 0.1,
'buttons' => array(
gettext('Omit') => 0,
gettext('Show') => 1,
gettext('Require') => 'required'),
'desc' => gettext('If the Name field is required, the poster must provide a name.')),
gettext('Email field') => array(
'key' => 'comment_email_required',
'type' => OPTION_TYPE_RADIO,
'order' => 0.2,
'buttons' => array(
gettext('Omit') => 0,
gettext('Show') => 1,
gettext('Require') => 'required'),
'desc' => gettext('If the Email field is required, the poster must provide an email address.')),
gettext('Website field') => array(
'key' => 'comment_web_required',
'type' => OPTION_TYPE_RADIO,
'order' => 0.3,
'buttons' => array(
gettext('Omit') => 0,
gettext('Show') => 1,
gettext('Require') => 'required'),
'desc' => gettext('If the Website field is required, the poster must provide a website.')),
gettext('Captcha field') => array(
'key' => 'Use_Captcha',
'type' => OPTION_TYPE_RADIO,
'order' => 0.4,
'buttons' => array(
gettext('Omit') => 0,
gettext('For guests') => 2,
gettext('Require') => 1),
'desc' => ($_zp_captcha->name) ? gettext('If Captcha is required, the form will include a Captcha verification.') : '' . gettext('No captcha handler is enabled.') . ''),
gettext('Address fields') => array(
'key' => 'comment_form_addresses',
'type' => OPTION_TYPE_RADIO,
'order' => 7,
'buttons' => array(
gettext('Omit') => 0,
gettext('Show') => 1,
gettext('Require') => 'required'),
'desc' => gettext('If Address fields are shown or required, the form will include positions for address information. If required, the poster must supply data in each address field.')),
gettext('Allow comments on') => array(
'key' => 'comment_form_allowed',
'type' => OPTION_TYPE_CHECKBOX_ARRAY,
'order' => 0.9,
'checkboxes' => $checkboxes,
'desc' => gettext('Comment forms will be presented on the checked pages.')),
gettext('Toggled comment block') => array(
'key' => 'comment_form_toggle',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 2,
'desc' => gettext('If checked, existing comments will be initially hidden. Clicking on the provided button will show them.')),
gettext('Show author URL') => array(
'key' => 'comment_form_showURL',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 7,
'desc' => gettext('To discourage SPAM, uncheck this box and the author URL will not be revealed.')),
gettext('Only members can comment') => array(
'key' => 'comment_form_members_only',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 4,
'desc' => gettext('If checked, only logged in users will be allowed to post comments.')),
gettext('Allow private postings') => array(
'key' => 'comment_form_private',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 6,
'desc' => gettext('If checked, posters may mark their comments as private (not for publishing).')),
gettext('Allow anonymous posting') => array(
'key' => 'comment_form_anon',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 5,
'desc' => gettext('If checked, posters may exclude their personal information from the published post.')),
gettext('Include RSS link') => array(
'key' => 'comment_form_rss',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 8,
'desc' => gettext('If checked, an RSS link will be included at the bottom of the comment section.')),
gettext('Comments per page') => array(
'key' => 'comment_form_comments_per_page',
'type' => OPTION_TYPE_TEXTBOX,
'order' => 9,
'desc' => gettext('The comments that should show per page on the admin tab and when using the jQuery pagination')),
gettext('Comment editor configuration') => array(
'key' => 'tinymce4_comments',
'type' => OPTION_TYPE_SELECTOR,
'order' => 1,
'selections' => $configarray,
'null_selection' => gettext('Disabled'),
'desc' => gettext('Configuration file for TinyMCE when used for comments. Set to Disabled
to disable visual editing.')),
gettext('Pagination') => array(
'key' => 'comment_form_pagination',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 3,
'desc' => gettext('Uncheck to disable the jQuery pagination of comments. Enabled by default.')),
gettext('Data usage confirmation') => array(
'key' => 'comment_form_dataconfirmation',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 11,
'desc' => gettext('If checked a mandatory checkbox is added for users to confirm about data storage and handling by your site. This is recommend to comply with the European GDPR.'))
);
return $options;
}
function handleOption($option, $currentValue) {
}
static function admin_tabs($tabs) {
if (zp_loggedin(COMMENT_RIGHTS)) {
$add = true;
$newtabs = array();
foreach ($tabs as $key => $tab) {
if ($add && !in_array($key, array('overview', 'edit', 'upload', 'pages', 'news', 'tags', 'menu'))) {
$newtabs['comments'] = array(
'text' => gettext("comments"),
'link' => FULLWEBPATH . "/" . ZENFOLDER . '/' . PLUGIN_FOLDER . '/' . 'comment_form/admin-comments.php?page=comments&tab=' . gettext('comments'),
'subtabs' => NULL);
$add = false;
}
$newtabs[$key] = $tab;
}
return $newtabs;
}
return $tabs;
}
static function toolbox() {
if (zp_loggedin(COMMENT_RIGHTS)) {
?>
: