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)) { ?>
  • getAdminEmail(); if (empty($email_list)) { setOption('email_new_comments', 0); } } if (is_null($addcommenttext)) $addcommenttext = '

    ' . gettext('Add a comment:') . '

    '; switch ($_zp_gallery_page) { case 'album.php': if (!getOption('comment_form_albums')) return; $obj = $_zp_current_album; break; case 'image.php': if (!getOption('comment_form_images')) return; $obj = $_zp_current_image; break; case 'pages.php': if (!getOption('comment_form_pages')) return; $obj = $_zp_current_zenpage_page; break; case 'news.php': if (!getOption('comment_form_articles') || !is_NewsArticle()) return; $obj = $_zp_current_zenpage_news; break; default: return; break; } $comments_open = $obj->getCommentsAllowed(); ?>
    ' . gettext('No Comments') . ''; $display = ''; } else { if ($addheader) echo '

    ' . sprintf(ngettext('%u Comment', '%u Comments', $num), $num) . '

    '; if (getOption('comment_form_toggle')) { ?>
    >
    >

    :

    '', 'website' => '', 'anon' => '', 'private' => '', 'comment' => '', 'street' => '', 'city' => '', 'state' => '', 'country' => '', 'postal' => '', 'comment_dataconfirmation' => ''); $stored = array_merge(array('email' => '', 'custom' => ''), $disabled, getCommentStored()); $custom = getSerializedArray($stored['custom']); foreach ($custom as $key => $value) { if (!empty($value)) $stored[$key] = $value; } foreach ($stored as $key => $value) { $disabled[$key] = false; } if (zp_loggedin()) { if (extensionEnabled('userAddressFields')) { $address = userAddressFields::getCustomData($_zp_current_admin_obj); foreach ($address as $key => $value) { if (!empty($value)) { $disabled[$key] = true; $stored[$key] = $value; } } } $name = $_zp_current_admin_obj->getName(); if (!empty($name)) { $stored['name'] = $name; $disabled['name'] = ' disabled="disabled"'; } else { $user = $_zp_current_admin_obj->getUser(); if (!empty($user)) { $stored['name'] = $user; $disabled['name'] = ' disabled="disabled"'; } } $email = $_zp_current_admin_obj->getEmail(); if (!empty($email)) { $stored['email'] = $email; $disabled['email'] = ' disabled="disabled"'; } if (!empty($address['website'])) { $stored['website'] = $address['website']; $disabled['website'] = ' disabled="disabled"'; } } $data = zp_apply_filter('comment_form_data', array('data' => $stored, 'disabled' => $disabled)); $disabled = $data['disabled']; $stored = $data['data']; foreach ($data as $check) { foreach ($check as $v) { if ($v) { $_zp_HTML_cache->disable(); // shouldn't cache partially filled in pages break 2; } } } if (!empty($addcommenttext)) { echo $addcommenttext; } ?>
    >