Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion acp/contactadmin_info.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

class contactadmin_info
{
function module()
public function module()
{
return [
'filename' => '\phpbbmodders\contactadmin\acp\contactadmin_module',
Expand Down
11 changes: 9 additions & 2 deletions acp/contactadmin_module.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,16 @@

class contactadmin_module
{
public $u_action;
/** @var string Form action URL, set by phpBB's module system */
public $u_action;

function main($id, $mode)
/** @var string Template file name */
public $tpl_name;

/** @var string Page title */
public $page_title;

public function main($id, $mode)
{
global $phpbb_container;

Expand Down
35 changes: 17 additions & 18 deletions adm/style/acp_contactadmin.html
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
{% INCLUDE 'overall_header.html' %}
<script>
var form_name = 'contactadmin';
var text_name = 'contact_admin_info';
var load_draft = false;
var upload = false;
var imageTag = false;
</script>
{% INCLUDECSS '@phpbbmodders_contactadmin/contactadmin_acp.css' %}
{% include 'overall_header.html' %}
<h1>{{ lang('ACP_CAT_CONTACTADMIN') }}</h1>
{% if CONTACT_ERROR %}
<div class="errorbox"><h3>{{ lang('WARNING') }}</h3>
<p>{{ CONTACT_ERROR }}</p>
</div>
{% endif %}

<form id="contactadmin" method="post" action="{{ U_ACTION }}">
<form id="contactadmin" method="post" action="{{ U_ACTION }}" data-bot-info-url="{{ AJAX_BOT_USER_INFO|e('html_attr') }}" data-lang-no-bot-user="{{ lang('CONTACT_NO_BOT_USER')|striptags|e('html_attr') }}" data-lang-bot-is-bot="{{ lang('CONTACT_BOT_IS_BOT')|striptags|e('html_attr') }}" data-lang-bot-is-guest="{{ lang('CONTACT_BOT_IS_GUEST')|striptags|e('html_attr') }}" data-method-email="{{ CONTACT_METHOD_EMAIL }}" data-method-pm="{{ CONTACT_METHOD_PM }}" data-method-post="{{ CONTACT_METHOD_POST }}">
<fieldset>
<legend>{{ lang('CONTACT_US_INFO') }}</legend>
<p>{{ lang('CONTACT_US_INFO_EXPLAIN') }}</p>
Expand All @@ -25,14 +19,14 @@ <h1>{{ lang('ACP_CAT_CONTACTADMIN') }}</h1>
{% endif %}
{% INCLUDE 'acp_posting_buttons.html' %}
<dl class="responsive-columns">
<dt style="width: 90px;" id="color_palette_placeholder" data-orientation="v" data-height="12" data-width="15" data-bbcode="true">
<dt class="contactadmin-palette" id="color_palette_placeholder" data-orientation="v" data-height="12" data-width="15" data-bbcode="true">
</dt>

<dd style="margin-{{ S_CONTENT_FLOW_BEGIN }}: 90px;">
<textarea name="contact_admin_info" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{{ CONTACT_INFO }}</textarea>
<dd class="contactadmin-editor-row">
<textarea name="contact_admin_info" rows="10" cols="60" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{{ CONTACT_INFO }}</textarea>
</dd>

<dd style="margin-{{ S_CONTENT_FLOW_BEGIN }}: 90px; margin-top: 5px;">
<dd class="contactadmin-editor-row contactadmin-editor-options">
{% if S_BBCODE_ALLOWED %}
<label><input type="checkbox" class="radio" name="disable_bbcode"{% if S_BBCODE_DISABLE_CHECKED %} checked="checked"{% endif %} /> {{ lang('DISABLE_BBCODE') }}</label>
{% endif %}
Expand All @@ -43,10 +37,10 @@ <h1>{{ lang('ACP_CAT_CONTACTADMIN') }}</h1>
<label><input type="checkbox" class="radio" name="disable_magic_url"{% if S_MAGIC_URL_DISABLE_CHECKED %} checked="checked"{% endif %} /> {{ lang('DISABLE_MAGIC_URL') }}</label>
{% endif %}
</dd>
<dd style="margin-{{ S_CONTENT_FLOW_BEGIN }}: 90px; margin-top: 10px;"><strong>{{ lang('OPTIONS') }}{{ lang('COLON') }} </strong>{{ BBCODE_STATUS }} :: {{ IMG_STATUS }} :: {{ FLASH_STATUS }} :: {{ URL_STATUS }} :: {{ SMILIES_STATUS }}</dd>
<dd class="contactadmin-editor-row contactadmin-editor-status"><strong>{{ lang('OPTIONS') }}{{ lang('COLON') }} </strong>{{ BBCODE_STATUS }} :: {{ IMG_STATUS }} :: {{ FLASH_STATUS }} :: {{ URL_STATUS }} :: {{ SMILIES_STATUS }}</dd>
</dl>
<fieldset class="submit-buttons">
<input class="button2" type="submit" name="preview" value="{{ lang('PREVIEW') }}" />
<input class="button2" type="submit" name="preview" value="{{ lang('PREVIEW')|e('html_attr') }}" />
</fieldset>
</fieldset>

Expand Down Expand Up @@ -124,13 +118,18 @@ <h1>{{ lang('ACP_CAT_CONTACTADMIN') }}</h1>
<dl id="contact-bot-forum">
<dt><label for="contact_forum">{{ lang('CONTACT_BOT_FORUM') ~ lang('COLON') }}</label><br>
<span>{{ lang('CONTACT_BOT_FORUM_EXPLAIN') }}</span></dt>
<dd>{{ CONTACT_BOT_FORUM }}</dd>
<dd><select id="contact_forum" name="forum">
{% for forum in loops.contact_forums %}
<option value="{{ forum.FORUM_ID }}"{% if forum.S_SELECTED %} selected="selected"{% endif %}{% if forum.S_DISABLED %} disabled="disabled" class="disabled-option"{% endif %}>{{ forum.FORUM_NAME }}</option>
{% endfor %}
</select></dd>
</dl>
</fieldset>

<fieldset class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT')|e('html_attr') }}" />
{{ S_FORM_TOKEN }}
</fieldset>
</form>
{% INCLUDE 'overall_footer.html' %}
{% INCLUDEJS '@phpbbmodders_contactadmin/contactadmin_acp.js' %}
{% include 'overall_footer.html' %}
29 changes: 29 additions & 0 deletions adm/style/contactadmin_acp.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* Contact Admin ACP settings */
.contactadmin-palette {
width: 90px;
}

.contactadmin-editor-row {
margin-left: 90px;
}

.rtl .contactadmin-editor-row {
margin-left: 0;
margin-right: 90px;
}

.contactadmin-editor-row textarea {
width: 95%;
}

.contactadmin-editor-options {
margin-top: 5px;
}

.contactadmin-editor-status {
margin-top: 10px;
}

.contactadmin-warning {
color: #e8590c;
}
63 changes: 63 additions & 0 deletions adm/style/contactadmin_acp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Globals read by phpBB's BBCode editor (editor.js)
var form_name = 'contactadmin';
var text_name = 'contact_admin_info';
var load_draft = false;
var upload = false;
var imageTag = false;

(function($) { // Avoid conflicts with other libraries

'use strict';

var $form = $('#contactadmin');
var settings = $form.data();

// Show who the chosen contact bot is, or why that user can't be used
$('#contact_bot_user').change(function() {
var userId = $(this).val();

$.ajax({
url: settings.botInfoUrl.replace(/_bot_info\/[0-9]*/g, '_bot_info/' + userId),
dataType: 'json',
success: function(json) {
var $link = $('#bot_user_link');

if (json.error === 'CONTACT_NO_BOT_USER') {
$link.html($('<span class="error"></span>').text(settings.langNoBotUser)).show();
} else if (json.error === 'CONTACT_BOT_IS_GUEST' || json.error === 'CONTACT_BOT_IS_BOT') {
var warning = (json.error === 'CONTACT_BOT_IS_GUEST') ? settings.langBotIsGuest : settings.langBotIsBot;
$link.html(json.user_link).append('<br>', $('<span class="contactadmin-warning"></span>').text(warning)).show();
} else {
$link.html(json.user_link).show();
}
}
});
});

// Hide the options that don't apply to the selected contact method
$("input[name='contact_method']").each(function() {
if ($(this).is(':checked') && this.value == settings.methodEmail) {
$('.contact-options').hide();
}
if ($(this).is(':checked') && this.value == settings.methodPost) {
$('.contact-who').hide();
}
});

// Show or hide the options when the contact method changes
$("input[name='contact_method']").change(function() {
if (this.value == settings.methodEmail || this.value == settings.methodPm) {
$('.contact-who').show('slow');
if (this.value == settings.methodEmail) {
$('.contact-options').hide('slow');
}
}
if (this.value == settings.methodPost || this.value == settings.methodPm) {
$('.contact-options').show('slow');
if (this.value == settings.methodPost) {
$('.contact-who').hide('slow');
}
}
});

})(jQuery);
74 changes: 0 additions & 74 deletions adm/style/event/acp_overall_footer_after.html

This file was deleted.

90 changes: 45 additions & 45 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
{
"name": "phpbbmodders/contactadmin",
"type": "phpbb-extension",
"description": "A contact form that lets guests and members reach the board administrators by email, private message or forum post.",
"homepage": "https://www.phpbbmodders.com/",
"version": "1.5.0",
"time": "2026-10-06",
"keywords": [
"phpbb",
"extension",
"contact admin",
"contact-form"
],
"license": "GPL-2.0-only",
"authors": [
{
"name": "phpBB Modders",
"email": "board@phpbbmodders.com",
"homepage": "https://www.phpbbmodders.com/",
"role": "Extension Developer"
},
{
"name": "Rich McGirr",
"role": "Past Developer"
}
],
"require": {
"php": ">=7.4",
"phpbb/phpbb": ">=3.3.19",
"composer/installers": "^1.0 || ^2.0"
},
"require-dev": {
"phpbb/epv": "dev-master"
},
"extra": {
"display-name": "Contact Admin",
"soft-require": {
"phpbb/phpbb": ">=3.3.19,<4.0.0@dev"
},
"version-check": {
"host": "www.phpbb.com",
"directory": "/customise/db/extension/contact_admin",
"filename": "version_check",
"ssl": true
}
}
"name": "phpbbmodders/contactadmin",
"type": "phpbb-extension",
"description": "A contact form that lets guests and members reach the board administrators by email, private message or forum post.",
"homepage": "https://www.phpbbmodders.com/",
"version": "1.5.0",
"time": "2026-10-06",
"keywords": [
"phpbb",
"extension",
"contact admin",
"contact-form"
],
"license": "GPL-2.0-only",
"authors": [
{
"name": "phpBB Modders",
"email": "board@phpbbmodders.com",
"homepage": "https://www.phpbbmodders.com/",
"role": "Extension Developer"
},
{
"name": "Rich McGirr",
"role": "Past Developer"
}
],
"require": {
"php": ">=7.4",
"phpbb/phpbb": ">=3.3.19,<4.0.0@dev",
"composer/installers": "^1.0 || ^2.0"
},
"require-dev": {
"phpbb/epv": "dev-master"
},
"extra": {
"display-name": "Contact Admin",
"soft-require": {
"phpbb/phpbb": ">=3.3.19,<4.0.0@dev"
},
"version-check": {
"host": "www.phpbb.com",
"directory": "/customise/db/extension/contact_admin",
"filename": "version_check",
"ssl": true
}
}
}
2 changes: 1 addition & 1 deletion config/routing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ phpbbmodders_contactadmin_displayform:

phpbbmodders_contactadmin_botuserinfo:
path: /contact_bot_info/{user_id}
defaults: { _controller: phpbbmodders.contactadmin.core:bot_user_info }
defaults: { _controller: phpbbmodders.contactadmin.core:bot_user_info_json }
requirements:
user_id: \d+
Loading
Loading