989 lines
30 KiB
Text
989 lines
30 KiB
Text
|
|
[%# HTML for the talkform / "slow reply" component shown on journal ReplyPages
|
||
|
|
|
||
|
|
Authors:
|
||
|
|
Nick Fagerlund <nick.fagerlund@gmail.com>
|
||
|
|
|
||
|
|
Copyright (c) 2019 by Dreamwidth Studios, LLC.
|
||
|
|
|
||
|
|
This program is free software; you may redistribute it and/or modify it under
|
||
|
|
the same terms as Perl itself. For a copy of the license, please reference
|
||
|
|
'perldoc perlartistic' or 'perldoc perlgpl'.
|
||
|
|
-%]
|
||
|
|
|
||
|
|
|
||
|
|
[%- IF foundation_beta -%][%# use new quickreply-style talkform -%]
|
||
|
|
|
||
|
|
<div id='qrdiv'><div id='qrformdiv'>
|
||
|
|
|
||
|
|
<form id="postform" name="postform" method="POST" action="[% form_url | url %]">
|
||
|
|
[%- dw.form_auth -%]
|
||
|
|
[%- hidden_form_elements -%]
|
||
|
|
|
||
|
|
[%- IF errors -%]
|
||
|
|
<ul>
|
||
|
|
[% FOREACH error IN errors -%]
|
||
|
|
<li><b>[% error %]</b></li>
|
||
|
|
[%- END %]
|
||
|
|
</ul>
|
||
|
|
<hr />
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- create_link -%]
|
||
|
|
|
||
|
|
[%# "From" fields %]
|
||
|
|
|
||
|
|
<div id="talkform-from">
|
||
|
|
<label>[%- '.opt.from' | ml %]</label>
|
||
|
|
|
||
|
|
[%- IF comment.editid -%]
|
||
|
|
<div class="from-option" id='from-ljuser'>
|
||
|
|
[%- IF remote_opts.banned -%]
|
||
|
|
[%- IF journal.is_community -%]
|
||
|
|
[%- '.opt.bannedfrom.comm' | ml -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[%- '.opt.bannedfrom' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[%- dw.img( 'id_user', '' ) -%]
|
||
|
|
|
||
|
|
<label for='talkpostfromremote'>
|
||
|
|
[%- '.opt.loggedin' | ml( username => remote.display_name ) -%]
|
||
|
|
</label>
|
||
|
|
[%- IF remote_opts.screened %]
|
||
|
|
[%- '.opt.willscreen' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
[%- form.hidden( name = 'usertype', value = 'cookieuser' ) -%]
|
||
|
|
[%- form.hidden(
|
||
|
|
name = 'cookieuser'
|
||
|
|
id = 'cookieuser'
|
||
|
|
value = remote.user
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- ELSE -%][%# New comment, not editing. -%]
|
||
|
|
[%# Anonymous: -%]
|
||
|
|
<div class="from-option[% UNLESS public_entry AND journal.allows_anon %] from-option-cannot[% END %]" id="from-anon">
|
||
|
|
<input type='radio' name='usertype' value='anonymous' id='talkpostfromanon' [%
|
||
|
|
IF public_entry AND journal.allows_anon -%]
|
||
|
|
[%- IF default_usertype == 'anonymous' -%]
|
||
|
|
checked='checked'
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
disabled='disabled'
|
||
|
|
[%- END
|
||
|
|
%] />
|
||
|
|
|
||
|
|
<label for='talkpostfromanon'[% UNLESS public_entry AND journal.allows_anon %] class="disabled"[% END %]>
|
||
|
|
[% dw.img( 'id_anonymous', '' ) %]
|
||
|
|
[% '.opt.anonymous' | ml %]
|
||
|
|
</label>
|
||
|
|
|
||
|
|
[%- IF public_entry AND journal.allows_anon -%]
|
||
|
|
[%- IF journal.screens_anon %]
|
||
|
|
[% '.opt.willscreen' | ml %]
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[%- IF ! public_entry %]
|
||
|
|
[% '.opt.noanonpost.nonpublic' | ml -%]
|
||
|
|
[%- ELSIF ! journal.allows_non_access -%]
|
||
|
|
[% ( journal.is_community ? '.opt.membersonly' : '.opt.friendsonly' )
|
||
|
|
| ml( username => "$journal.user" )
|
||
|
|
%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[% '.opt.noanonpost' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- IF remote.openid_identity AND default_usertype != 'openid' -%]
|
||
|
|
[%# ...then we're legit logged in as an OpenID user, not just holding a
|
||
|
|
temp $remote on a partial form submission (captcha, error, etc.) -%]
|
||
|
|
<div class="from-option
|
||
|
|
[%- UNLESS remote_opts.allowed %] from-option-cannot[% END -%]
|
||
|
|
" id='from-openid-loggedin'>
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='openid_cookie' data-more="from-openid-loggedin-more" id='talkpostfromoidli' [%
|
||
|
|
IF remote_opts.allowed -%]
|
||
|
|
[%- IF default_usertype == 'openid_cookie' -%]
|
||
|
|
checked='checked'
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
disabled='disabled'
|
||
|
|
[%- END
|
||
|
|
%] />
|
||
|
|
|
||
|
|
<label for='talkpostfromoidli'[% UNLESS remote_opts.allowed %] class="disabled"[% END %]>
|
||
|
|
[% dw.img( 'id_openid', '' ) %]
|
||
|
|
[% '.opt.openid.loggedin' | ml %]
|
||
|
|
[% remote.display_name %]
|
||
|
|
</label>
|
||
|
|
|
||
|
|
[%- IF remote_opts.allowed -%]
|
||
|
|
[%- IF remote_opts.screened %] [% '.opt.willscreen' | ml -%][%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
|
||
|
|
[%- IF remote_opts.banned -%][%# p. cut and dried -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'.opt.bannedfrom.comm' : '.opt.bannedfrom'
|
||
|
|
| ml( journal => journal.user ) -%]
|
||
|
|
[%- ELSIF journal.allows_non_access -%][%# your email's not validated. -%]
|
||
|
|
[%- '.opt.noopenidpost' | ml(
|
||
|
|
aopts1 => "href='${site.root}/changeemail'"
|
||
|
|
aopts2 => "href='${site.root}/register'"
|
||
|
|
) -%]
|
||
|
|
[%- ELSE -%][%# you're not on the access list -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'/talkpost_do.tt.error.notamember' : '/talkpost_do.tt.error.notafriend'
|
||
|
|
| ml( user => journal.user ) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="from-login" id="from-openid-loggedin-more">
|
||
|
|
[%- IF remote_opts.can_manage_community -%]
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'prop_admin_post'
|
||
|
|
id = 'prop_admin_post'
|
||
|
|
value = 1
|
||
|
|
selected = comment.admin_post
|
||
|
|
label = 'Admin Post'
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- ELSE -%][%# not logged in as openid user -%]
|
||
|
|
|
||
|
|
<div class="from-option" id="from-openid-loggedout">
|
||
|
|
<input type='radio' name='usertype' value='openid' data-more="from-openid-more" id='talkpostfromoidlo'[% IF default_usertype == 'openid' %] checked='checked'[% END %] />
|
||
|
|
|
||
|
|
<label for='talkpostfromoidlo'>
|
||
|
|
[% dw.img( 'id_openid', '' ) %]
|
||
|
|
[% '.opt.openid' | ml %]
|
||
|
|
</label>
|
||
|
|
[% help_icon( 'openid' ) %]
|
||
|
|
[%- IF journal.screens_all -%]
|
||
|
|
[%- '.opt.willscreen' | ml -%]
|
||
|
|
[%- ELSIF journal.screens_non_access -%]
|
||
|
|
[%- '.opt.willscreenfriend' | ml -%]
|
||
|
|
[%- ELSIF journal.screens_anon -%]
|
||
|
|
[%- '.opt.willscreenopenid' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
<div class="from-login" id="from-openid-more">
|
||
|
|
<div>
|
||
|
|
[%- form.textbox(
|
||
|
|
name = 'oidurl'
|
||
|
|
id = 'oidurl'
|
||
|
|
label = dw.ml('.login.url')
|
||
|
|
size = 53
|
||
|
|
maxlength = 60
|
||
|
|
value = ( comment.oidurl || remote.openid_identity )
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'oiddo_login'
|
||
|
|
id = 'oidlogincheck'
|
||
|
|
label = dw.ml('.loginq')
|
||
|
|
selected = comment.oiddo_login
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%# logged-in site user -%]
|
||
|
|
[%- IF remote && ! remote.openid_identity -%]
|
||
|
|
<div class="from-option
|
||
|
|
[%- UNLESS remote_opts.allowed %] from-option-cannot[% END -%]
|
||
|
|
" id="from-user-loggedin">
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='cookieuser' data-more="from-user-loggedin-more" id='talkpostfromremote' [%
|
||
|
|
IF remote_opts.allowed -%]
|
||
|
|
[%- IF default_usertype == 'cookieuser' -%]
|
||
|
|
checked='checked'
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
disabled='disabled'
|
||
|
|
[% END
|
||
|
|
%] />
|
||
|
|
|
||
|
|
<label for='talkpostfromremote'[% UNLESS remote_opts.allowed %] class="disabled"[% END %]>
|
||
|
|
[% dw.img( 'id_user', '' ) %]
|
||
|
|
[% remote.display_name %]
|
||
|
|
[% '.opt.loggedin2' | ml %]
|
||
|
|
</label>
|
||
|
|
|
||
|
|
[%- IF remote_opts.allowed -%]
|
||
|
|
[%- IF remote_opts.screened -%] [%- '.opt.willscreen' | ml -%][%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
|
||
|
|
[%- IF remote_opts.banned -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'.opt.bannedfrom.comm' : '.opt.bannedfrom'
|
||
|
|
| ml( journal => journal.user ) -%]
|
||
|
|
[%- ELSE -%][%# you're not on the access list -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'/talkpost_do.tt.error.notamember' : '/talkpost_do.tt.error.notafriend'
|
||
|
|
| ml( user => journal.user ) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- UNLESS remote_opts.banned -%]
|
||
|
|
<input type='hidden' name='cookieuser' value='[% remote.user %]' id='cookieuser' />
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="from-login" id="from-user-loggedin-more">
|
||
|
|
[%- IF remote_opts.can_manage_community -%]
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'prop_admin_post'
|
||
|
|
id = 'prop_admin_post'
|
||
|
|
value = 1
|
||
|
|
selected = comment.admin_post
|
||
|
|
label = 'Admin Post'
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%# not-logged-in site user -%]
|
||
|
|
<div class="from-option" id="from-user-loggedout">
|
||
|
|
<input type='radio' name='usertype' value='user' data-more="from-user-more" id='talkpostfromlj'[% IF default_usertype == 'user' %] checked='checked'[% END %] />
|
||
|
|
|
||
|
|
<label for='talkpostfromlj'>
|
||
|
|
[% dw.img( 'id_user', '' ) %]
|
||
|
|
[% IF remote && ! remote.openid_identity %] Other [%- END %]
|
||
|
|
[% '.opt.siteuser' | ml( sitename => site.nameshort ) %]
|
||
|
|
</label>
|
||
|
|
[%- IF journal.screens_all -%]
|
||
|
|
[%- '.opt.willscreen' | ml -%]
|
||
|
|
[%- ELSIF journal.screens_non_access -%]
|
||
|
|
[%- '.opt.willscreenfriend' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%# site user login form, always present but sometimes hidden -%]
|
||
|
|
<div class="from-login" id="from-user-more">
|
||
|
|
<div>
|
||
|
|
[%- form.textbox(
|
||
|
|
name = 'userpost'
|
||
|
|
id = 'username'
|
||
|
|
label = dw.ml('Username')
|
||
|
|
size = 13
|
||
|
|
maxlength = site.maxlength_user
|
||
|
|
value = comment.user
|
||
|
|
style = "background: url('${site.imgroot}/silk/identity/user.png') no-repeat; background-color: #fff; background-position: 0px 50%; padding-left: 18px; color: #00C; font-weight: bold;"
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.password(
|
||
|
|
name = 'password'
|
||
|
|
id= 'password'
|
||
|
|
label = dw.ml('Password')
|
||
|
|
maxlength = site.maxlength_pass
|
||
|
|
value = comment.password
|
||
|
|
size = 18
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'do_login'
|
||
|
|
id = 'logincheck'
|
||
|
|
label = dw.ml('.loginq')
|
||
|
|
selected = comment.do_login
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- IF ! create_link && ! remote -%]
|
||
|
|
<span style='font-size: 8pt; font-style: italic;'>
|
||
|
|
[%- '.noaccount' | ml( aopts => "href='${site.root}/create'") -%]
|
||
|
|
</span>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- END -%][%# figuring out whether it's an edit or new reply. -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class='qr-meta'>
|
||
|
|
[%- current_icon = comment.current_icon;
|
||
|
|
current_icon_kw = comment.current_icon_kw;
|
||
|
|
focus_after_browse = "#body" -%]
|
||
|
|
[% INCLUDE "components/icon-select-icon.tt" IF remote %]
|
||
|
|
[% INCLUDE "components/icon-select-dropdown.tt" IF remote %]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
|
||
|
|
[%# Subject, subjecticon, quote button %]
|
||
|
|
|
||
|
|
<div class="qr-subject">
|
||
|
|
[%- form.textbox(
|
||
|
|
label = dw.ml( '.opt.subject2' )
|
||
|
|
labelclass = 'invisible'
|
||
|
|
size = 50
|
||
|
|
maxlength = 100
|
||
|
|
name = 'subject'
|
||
|
|
id = 'subject'
|
||
|
|
placeholder = dw.ml( '.opt.subject2' )
|
||
|
|
value = comment.subject
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- form.hidden(
|
||
|
|
id = 'subjectIconField'
|
||
|
|
name = 'subjecticon'
|
||
|
|
value = comment.subjecticon
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%# The current subjecticon, as the button to open the menu. %]
|
||
|
|
[%- print_subjecticon_by_id(
|
||
|
|
comment.subjecticon,
|
||
|
|
"id='subjectIconImage' role='button' class='js-only' style='display: none;' title='Click to change the subject icon'"
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div style="display: none;" id="subjectIconList">
|
||
|
|
<div class="subjecticon-grid">
|
||
|
|
[%- FOREACH id IN subjecticon_ids -%]
|
||
|
|
<div>
|
||
|
|
[%- print_subjecticon_by_id(
|
||
|
|
id,
|
||
|
|
"id='${id}' role='button'"
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div id='ljnohtmlsubj' class='ljdeem no-js'><span style='font-size: 8pt; font-style: italic;'>
|
||
|
|
[%- '.nosubjecthtml' | ml -%]
|
||
|
|
</span></div>
|
||
|
|
|
||
|
|
[%# Markup controls %]
|
||
|
|
|
||
|
|
<div class="qr-markup">
|
||
|
|
<div class="qr-markup-type">
|
||
|
|
[%- form.select(
|
||
|
|
label = 'Formatting type'
|
||
|
|
labelclass = 'invisible'
|
||
|
|
name = 'prop_editor'
|
||
|
|
id = 'prop_editor'
|
||
|
|
selected = editors.selected
|
||
|
|
items = editors.items
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
<a href="[% 'markup.helplink.url' | ml %]" tabindex="-1" target="_blank">[%-
|
||
|
|
dw.img('help', '',
|
||
|
|
{
|
||
|
|
alt => dw.ml('markup.helplink.alttext'),
|
||
|
|
title => dw.ml('markup.helplink.alttext'),
|
||
|
|
style => 'vertical-align: middle;'
|
||
|
|
}
|
||
|
|
)
|
||
|
|
-%]</a>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="qr-markup-controls">
|
||
|
|
<input type="button" id="comment-text-quote" value="Quote" tabindex="-1" class="js-only markup-button" style="display: none;" data-quote-error="[%- 'talk.error.quickquote' | ml -%]" />
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
[%# Message body text %]
|
||
|
|
|
||
|
|
<div class="qr-body">
|
||
|
|
[%- form.textarea(
|
||
|
|
label = dw.ml( '.opt.message2' )
|
||
|
|
labelclass = 'invisible'
|
||
|
|
rows = 10
|
||
|
|
cols = 80
|
||
|
|
wrap = 'soft'
|
||
|
|
name = 'body'
|
||
|
|
id = 'body'
|
||
|
|
value = comment.body
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
|
||
|
|
[%# Misc checkboxes, captcha, edit reason - after body, before post buttons %]
|
||
|
|
|
||
|
|
<div id="talkform-misc">
|
||
|
|
[%- IF remote_opts.can_unscreen_parent -%]
|
||
|
|
<br />
|
||
|
|
[%- form.checkbox(
|
||
|
|
label = dw.ml('.opt.unscreenparent')
|
||
|
|
name = 'unscreen_parent'
|
||
|
|
id = 'unscreen_parent'
|
||
|
|
value = 1
|
||
|
|
selected = 0
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF captcha -%]
|
||
|
|
<br />
|
||
|
|
[%- captcha.html -%]
|
||
|
|
[%- form.hidden(
|
||
|
|
name = 'captcha_type'
|
||
|
|
value = captcha.type
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF comment.editid -%]
|
||
|
|
<br />
|
||
|
|
[%- form.textbox(
|
||
|
|
label = dw.ml('.opt.editreason')
|
||
|
|
name = 'editreason'
|
||
|
|
id = 'editreason'
|
||
|
|
value = comment.editreason
|
||
|
|
size = 75
|
||
|
|
maxlength = 255
|
||
|
|
) -%]
|
||
|
|
<div id='nohtmledit' class='ljdeem no-js'><span style='font-size: 8pt; font-style: italic;'>[% '.noedithtml' | ml %]</span></div>
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
|
||
|
|
[%# post button controls and info notices. %]
|
||
|
|
<div class="qr-footer">
|
||
|
|
|
||
|
|
[%- form.submit(
|
||
|
|
name = "submitpost"
|
||
|
|
value = comment.editid ? dw.ml('.opt.edit') : dw.ml('.opt.submit')
|
||
|
|
id = "submitpost"
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- form.submit(
|
||
|
|
name = "submitpreview"
|
||
|
|
value = dw.ml('talk.btn.preview')
|
||
|
|
id = "submitpview"
|
||
|
|
) -%]
|
||
|
|
[%- form.hidden(
|
||
|
|
name = "previewplaceholder"
|
||
|
|
id = "previewplaceholder"
|
||
|
|
value = 1
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- IF journal.is_iplogging -%]
|
||
|
|
<div class='de'>
|
||
|
|
[%- IF journal.is_iplogging == 'all' -%]
|
||
|
|
[% '.logyourip' | ml -%]
|
||
|
|
[%- ELSIF journal.is_iplogging == 'anon' -%]
|
||
|
|
[% '.loganonip' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
[%- help_icon( 'iplogging' ) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF journal.is_linkstripped -%]
|
||
|
|
<div class='de'>[%- '.linkstripped' | ml -%]</div>
|
||
|
|
[%- END %]
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
</form>
|
||
|
|
</div></div>
|
||
|
|
|
||
|
|
[%- ELSE -%][%# not in S2 foundation beta, use old table-based talkform -%]
|
||
|
|
|
||
|
|
<form id="postform" name="postform" method="POST" action="[% form_url | url %]">
|
||
|
|
[%- dw.form_auth -%]
|
||
|
|
[%- hidden_form_elements -%]
|
||
|
|
|
||
|
|
[%- IF errors -%]
|
||
|
|
<ul>
|
||
|
|
[% FOREACH error IN errors -%]
|
||
|
|
<li><b>[% error %]</b></li>
|
||
|
|
[%- END %]
|
||
|
|
</ul>
|
||
|
|
<hr />
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- create_link -%]
|
||
|
|
|
||
|
|
<table summary='' class='talkform'>
|
||
|
|
[%# First row: "From" fields %]
|
||
|
|
|
||
|
|
<tr id='talkform-from'>
|
||
|
|
<td align='right' valign='top'>
|
||
|
|
[%- '.opt.from' | ml %]
|
||
|
|
</td>
|
||
|
|
|
||
|
|
<td>
|
||
|
|
[%- IF comment.editid -%]
|
||
|
|
<div class="from-option" id='from-ljuser'>
|
||
|
|
[%- IF remote_opts.banned -%]
|
||
|
|
[%- IF journal.is_community -%]
|
||
|
|
[%- '.opt.bannedfrom.comm' | ml -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[%- '.opt.bannedfrom' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
|
||
|
|
[%- dw.img( 'id_user', '' ) -%]
|
||
|
|
|
||
|
|
<label for='talkpostfromremote'>
|
||
|
|
[%- '.opt.loggedin' | ml( username => remote.display_name ) -%]
|
||
|
|
</label>
|
||
|
|
[%- IF remote_opts.screened %]
|
||
|
|
[%- '.opt.willscreen' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
[%- form.hidden( name = 'usertype', value = 'cookieuser' ) -%]
|
||
|
|
[%- form.hidden(
|
||
|
|
name = 'cookieuser'
|
||
|
|
id = 'cookieuser'
|
||
|
|
value = remote.user
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- ELSE -%][%# New comment, not editing. -%]
|
||
|
|
[%# Anonymous: -%]
|
||
|
|
<div class="from-option[% UNLESS public_entry AND journal.allows_anon %] from-option-cannot[% END %]" id="from-anon">
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='anonymous' id='talkpostfromanon' [%
|
||
|
|
IF public_entry AND journal.allows_anon -%]
|
||
|
|
[%- IF default_usertype == 'anonymous' -%]
|
||
|
|
checked='checked'
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
disabled='disabled'
|
||
|
|
[%- END
|
||
|
|
%] />
|
||
|
|
|
||
|
|
<label for='talkpostfromanon'[% UNLESS public_entry AND journal.allows_anon %] class="disabled"[% END %]>
|
||
|
|
[% dw.img( 'id_anonymous', '' ) %]
|
||
|
|
[% '.opt.anonymous' | ml %]
|
||
|
|
</label>
|
||
|
|
|
||
|
|
[%- IF public_entry AND journal.allows_anon -%]
|
||
|
|
[%- IF journal.screens_anon %]
|
||
|
|
[% '.opt.willscreen' | ml %]
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[%- IF ! public_entry %]
|
||
|
|
[% '.opt.noanonpost.nonpublic' | ml -%]
|
||
|
|
[%- ELSIF ! journal.allows_non_access -%]
|
||
|
|
[% ( journal.is_community ? '.opt.membersonly' : '.opt.friendsonly' )
|
||
|
|
| ml( username => "$journal.user" )
|
||
|
|
%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
[% '.opt.noanonpost' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- IF remote.openid_identity AND default_usertype != 'openid' -%]
|
||
|
|
[%# ...then we're legit logged in as an OpenID user, not just holding a
|
||
|
|
temp $remote on a partial form submission (captcha, error, etc.) -%]
|
||
|
|
<div class="from-option
|
||
|
|
[%- UNLESS remote_opts.allowed %] from-option-cannot[% END -%]
|
||
|
|
" id='from-openid-loggedin'>
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='openid_cookie' id='talkpostfromoidli' [%
|
||
|
|
IF remote_opts.allowed -%]
|
||
|
|
[%- IF default_usertype == 'openid_cookie' -%]
|
||
|
|
checked='checked'
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
disabled='disabled'
|
||
|
|
[%- END
|
||
|
|
%] />
|
||
|
|
|
||
|
|
<label for='talkpostfromoidli'[% UNLESS remote_opts.allowed %] class="disabled"[% END %]>
|
||
|
|
[% dw.img( 'id_openid', '' ) %]
|
||
|
|
[% '.opt.openid.loggedin' | ml %]
|
||
|
|
[% remote.display_name %]
|
||
|
|
</label>
|
||
|
|
|
||
|
|
[%- IF remote_opts.allowed -%]
|
||
|
|
[%- IF remote_opts.screened %] [% '.opt.willscreen' | ml -%][%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
|
||
|
|
[%- IF remote_opts.banned -%][%# p. cut and dried -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'.opt.bannedfrom.comm' : '.opt.bannedfrom'
|
||
|
|
| ml( journal => journal.user ) -%]
|
||
|
|
[%- ELSIF journal.allows_non_access -%][%# your email's not validated. -%]
|
||
|
|
[%- '.opt.noopenidpost' | ml(
|
||
|
|
aopts1 => "href='${site.root}/changeemail'"
|
||
|
|
aopts2 => "href='${site.root}/register'"
|
||
|
|
) -%]
|
||
|
|
[%- ELSE -%][%# you're not on the access list -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'/talkpost_do.tt.error.notamember' : '/talkpost_do.tt.error.notafriend'
|
||
|
|
| ml( user => journal.user ) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- ELSE -%][%# not logged in as openid user -%]
|
||
|
|
|
||
|
|
<div class="from-option" id="from-openid-loggedout">
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='openid' data-more="from-openid-more" id='talkpostfromoidlo'[% IF default_usertype == 'openid' %] checked='checked'[% END %] />
|
||
|
|
|
||
|
|
<label for='talkpostfromoidlo'>
|
||
|
|
[% dw.img( 'id_openid', '' ) %]
|
||
|
|
[% '.opt.openid' | ml %]
|
||
|
|
</label>
|
||
|
|
[% help_icon( 'openid' ) %]
|
||
|
|
[%- IF journal.screens_all -%]
|
||
|
|
[%- '.opt.willscreen' | ml -%]
|
||
|
|
[%- ELSIF journal.screens_non_access -%]
|
||
|
|
[%- '.opt.willscreenfriend' | ml -%]
|
||
|
|
[%- ELSIF journal.screens_anon -%]
|
||
|
|
[%- '.opt.willscreenopenid' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
<div class="from-login" id="from-openid-more">
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.textbox(
|
||
|
|
name = 'oidurl'
|
||
|
|
id = 'oidurl'
|
||
|
|
label = dw.ml('.login.url')
|
||
|
|
size = 53
|
||
|
|
maxlength = 60
|
||
|
|
value = ( comment.oidurl || remote.openid_identity )
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'oiddo_login'
|
||
|
|
id = 'oidlogincheck'
|
||
|
|
label = dw.ml('.loginq')
|
||
|
|
selected = comment.oiddo_login
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%# logged-in site user -%]
|
||
|
|
[%- IF remote && ! remote.openid_identity -%]
|
||
|
|
<div class="from-option
|
||
|
|
[%- UNLESS remote_opts.allowed %] from-option-cannot[% END -%]
|
||
|
|
" id="from-user-loggedin">
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='cookieuser' id='talkpostfromremote' [%
|
||
|
|
IF remote_opts.allowed -%]
|
||
|
|
[%- IF default_usertype == 'cookieuser' -%]
|
||
|
|
checked='checked'
|
||
|
|
[%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
disabled='disabled'
|
||
|
|
[% END
|
||
|
|
%] />
|
||
|
|
|
||
|
|
<label for='talkpostfromremote'[% UNLESS remote_opts.allowed %] class="disabled"[% END %]>
|
||
|
|
[% dw.img( 'id_user', '' ) %]
|
||
|
|
[% '.opt.loggedin' | ml( username => remote.display_name ) %]
|
||
|
|
</label>
|
||
|
|
|
||
|
|
[%- IF remote_opts.allowed -%]
|
||
|
|
[%- IF remote_opts.screened -%] [%- '.opt.willscreen' | ml -%][%- END -%]
|
||
|
|
[%- ELSE -%]
|
||
|
|
|
||
|
|
[%- IF remote_opts.banned -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'.opt.bannedfrom.comm' : '.opt.bannedfrom'
|
||
|
|
| ml( journal => journal.user ) -%]
|
||
|
|
[%- ELSE -%][%# you're not on the access list -%]
|
||
|
|
[%- journal.is_community ?
|
||
|
|
'/talkpost_do.tt.error.notamember' : '/talkpost_do.tt.error.notafriend'
|
||
|
|
| ml( user => journal.user ) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- UNLESS remote_opts.banned -%]
|
||
|
|
<input type='hidden' name='cookieuser' value='[% remote.user %]' id='cookieuser' />
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%# not-logged-in site user -%]
|
||
|
|
<div class="from-option" id="from-user-loggedout">
|
||
|
|
|
||
|
|
<input type='radio' name='usertype' value='user' data-more="from-user-more" id='talkpostfromlj'[% IF default_usertype == 'user' %] checked='checked'[% END %] />
|
||
|
|
|
||
|
|
<label for='talkpostfromlj'>
|
||
|
|
[% dw.img( 'id_user', '' ) %]
|
||
|
|
[% IF remote && ! remote.openid_identity %] Other [%- END %]
|
||
|
|
[% '.opt.siteuser' | ml( sitename => site.nameshort ) %]
|
||
|
|
</label>
|
||
|
|
[%- IF journal.screens_all -%]
|
||
|
|
[%- '.opt.willscreen' | ml -%]
|
||
|
|
[%- ELSIF journal.screens_non_access -%]
|
||
|
|
[%- '.opt.willscreenfriend' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%# site user login form, always present but sometimes hidden -%]
|
||
|
|
<div class="from-login" id="from-user-more">
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.textbox(
|
||
|
|
name = 'userpost'
|
||
|
|
id = 'username'
|
||
|
|
label = dw.ml('Username')
|
||
|
|
size = 13
|
||
|
|
maxlength = site.maxlength_user
|
||
|
|
value = comment.user
|
||
|
|
style = "background: url('${site.imgroot}/silk/identity/user.png') no-repeat; background-color: #fff; background-position: 0px 1px; padding-left: 18px; color: #00C; font-weight: bold;"
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.password(
|
||
|
|
name = 'password'
|
||
|
|
id= 'password'
|
||
|
|
label = dw.ml('Password')
|
||
|
|
maxlength = site.maxlength_pass
|
||
|
|
value = comment.password
|
||
|
|
size = 18
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div>
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'do_login'
|
||
|
|
id = 'logincheck'
|
||
|
|
label = dw.ml('.loginq')
|
||
|
|
selected = comment.do_login
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- IF ! create_link && ! remote -%]
|
||
|
|
|
||
|
|
<span style='font-size: 8pt; font-style: italic;'>
|
||
|
|
[%- '.noaccount' | ml( aopts => "href='${site.root}/create'") -%]
|
||
|
|
</span>
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- END -%][%# figuring out whether it's an edit or new reply. -%]
|
||
|
|
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
|
||
|
|
[%# Second row: Subject and metadata fields %]
|
||
|
|
|
||
|
|
<tr valign="top">
|
||
|
|
<td align="right">
|
||
|
|
[%- '.opt.subject' | ml -%]
|
||
|
|
</td>
|
||
|
|
|
||
|
|
<td>
|
||
|
|
[%- form.textbox(
|
||
|
|
name = 'subject'
|
||
|
|
id = 'subject'
|
||
|
|
size = 50
|
||
|
|
maxlength = 100
|
||
|
|
value = comment.subject
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- form.hidden(
|
||
|
|
id = 'subjectIconField'
|
||
|
|
name = 'subjecticon'
|
||
|
|
value = comment.subjecticon
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%# The current subjecticon, as the button to open the menu. %]
|
||
|
|
[%- print_subjecticon_by_id(
|
||
|
|
comment.subjecticon,
|
||
|
|
"id='subjectIconImage' title='Click to change the subject icon' class='js-only' style='display: none;cursor:pointer;cursor:hand'"
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
<blockquote style="display: none;" id="subjectIconList">
|
||
|
|
<div style='display: flex; flex-wrap: wrap; align-items: center; width: 390px; border: 1px solid #AAAAAA'> [%# aaaaaa indeed, my dude %]
|
||
|
|
[%- FOREACH id IN subjecticon_ids -%]
|
||
|
|
<div style="width: 32px;">
|
||
|
|
[%- print_subjecticon_by_id(
|
||
|
|
id,
|
||
|
|
"id='${id}' style='cursor: pointer; cursor: hand; margin-left: auto; margin-right: auto; display: block;'"
|
||
|
|
) -%]
|
||
|
|
</div>
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
</blockquote>
|
||
|
|
|
||
|
|
<div id='ljnohtmlsubj' class='ljdeem no-js'><span style='font-size: 8pt; font-style: italic;'>
|
||
|
|
[%- '.nosubjecthtml' | ml -%]
|
||
|
|
</span></div>
|
||
|
|
|
||
|
|
[%- IF remote AND remote.icon_keyword_menu.size > 0 -%]
|
||
|
|
<div id="userpics">
|
||
|
|
[%- '.label.picturetouse2' | ml %]
|
||
|
|
[% form.select(
|
||
|
|
name = 'prop_picture_keyword'
|
||
|
|
id = 'prop_picture_keyword'
|
||
|
|
selected = comment.current_icon_kw
|
||
|
|
items = remote.icon_keyword_menu
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- IF remote.can_use_userpic_select -%]
|
||
|
|
<input type="button" class="js-only" style="display: none;" id="lj_userpicselect" data-iconbrowser-keywordorder="[%- remote.iconbrowser_keywordorder -%]" data-iconbrowser-metatext="[%- remote.iconbrowser_metatext -%]" data-iconbrowser-smallicons="[%- remote.iconbrowser_smallicons -%]" value="Browse">
|
||
|
|
</input>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
<input type='button' id='randomicon' class="js-only" style="display: none;" value='[%- '.userpic.random2' | ml -%]' />
|
||
|
|
</div>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
|
||
|
|
<div id="misc_controls">
|
||
|
|
[%- form.select(
|
||
|
|
label = 'Formatting type'
|
||
|
|
labelclass = 'invisible'
|
||
|
|
name = 'prop_editor'
|
||
|
|
id = 'prop_editor'
|
||
|
|
selected = editors.selected
|
||
|
|
items = editors.items
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
<a href="[% 'markup.helplink.url' | ml %]" tabindex="-1" target="_blank">[%-
|
||
|
|
dw.img('help', '',
|
||
|
|
{
|
||
|
|
alt => dw.ml('markup.helplink.alttext'),
|
||
|
|
title => dw.ml('markup.helplink.alttext'),
|
||
|
|
style => 'vertical-align: middle;'
|
||
|
|
}
|
||
|
|
)
|
||
|
|
-%]</a>
|
||
|
|
|
||
|
|
<input type="button" id="comment-text-quote" value="Quote" class="js-only" style="display: none;" data-quote-error="[%- 'talk.error.quickquote' | ml -%]" />
|
||
|
|
|
||
|
|
[%- IF remote_opts.can_manage_community -%]
|
||
|
|
[%- form.checkbox(
|
||
|
|
name = 'prop_admin_post'
|
||
|
|
id = 'prop_admin_post'
|
||
|
|
value = 1
|
||
|
|
selected = comment.admin_post
|
||
|
|
label = 'Admin Post'
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
|
||
|
|
[%# Third row: Message body text %]
|
||
|
|
|
||
|
|
<tr valign="top">
|
||
|
|
<td align="right">
|
||
|
|
[%- '.opt.message' | ml -%]
|
||
|
|
</td>
|
||
|
|
|
||
|
|
<td style='width: 90%'>
|
||
|
|
[%- form.textarea(
|
||
|
|
rows = 10
|
||
|
|
cols = 75
|
||
|
|
wrap = 'soft'
|
||
|
|
name = 'body'
|
||
|
|
id = 'commenttext'
|
||
|
|
value = comment.body
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- IF remote_opts.can_unscreen_parent -%]
|
||
|
|
<br />
|
||
|
|
[%- form.checkbox(
|
||
|
|
label = dw.ml('.opt.unscreenparent')
|
||
|
|
name = 'unscreen_parent'
|
||
|
|
id = 'unscreen_parent'
|
||
|
|
value = 1
|
||
|
|
selected = 0
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF captcha -%]
|
||
|
|
<br />
|
||
|
|
[%- captcha.html -%]
|
||
|
|
[%- form.hidden(
|
||
|
|
name = 'captcha_type'
|
||
|
|
value = captcha.type
|
||
|
|
) -%]
|
||
|
|
[%- END -%]
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
|
||
|
|
[%# Fourth row: Edit reason field (optional) %]
|
||
|
|
|
||
|
|
[%- IF comment.editid -%]
|
||
|
|
<tr valign="top">
|
||
|
|
<td align="right">
|
||
|
|
[%- '.opt.editreason' | ml -%]
|
||
|
|
</td>
|
||
|
|
|
||
|
|
<td>
|
||
|
|
[%- form.textbox(
|
||
|
|
name = 'editreason'
|
||
|
|
id = 'editreason'
|
||
|
|
value = comment.editreason
|
||
|
|
size = 75
|
||
|
|
maxlength = 255
|
||
|
|
) -%]
|
||
|
|
<div id='nohtmledit' class='ljdeem no-js'><span style='font-size: 8pt; font-style: italic;'>[% '.noedithtml' | ml %]</span></div>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%# Final row: post button controls and info notices. (Previously subsumed into either row three or four.) %]
|
||
|
|
<tr valign="top">
|
||
|
|
<td align="right"> </td>
|
||
|
|
<td>
|
||
|
|
|
||
|
|
[%- form.submit(
|
||
|
|
name = "submitpost"
|
||
|
|
value = comment.editid ? dw.ml('.opt.edit') : dw.ml('.opt.submit')
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- form.submit(
|
||
|
|
name = "submitpreview"
|
||
|
|
value = dw.ml('talk.btn.preview')
|
||
|
|
id = "submitpview"
|
||
|
|
) -%]
|
||
|
|
[%- form.hidden(
|
||
|
|
name = "previewplaceholder"
|
||
|
|
id = "previewplaceholder"
|
||
|
|
value = 1
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- IF journal.is_iplogging -%]
|
||
|
|
<div class='de'>
|
||
|
|
[%- IF journal.is_iplogging == 'all' -%]
|
||
|
|
[% '.logyourip' | ml -%]
|
||
|
|
[%- ELSIF journal.is_iplogging == 'anon' -%]
|
||
|
|
[% '.loganonip' | ml -%]
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
[%- help_icon( 'iplogging' ) -%]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF journal.is_linkstripped -%]
|
||
|
|
<div class='de'>[%- '.linkstripped' | ml -%]</div>
|
||
|
|
[%- END %]
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
|
||
|
|
</form>
|
||
|
|
|
||
|
|
[%- END -%][%# check for S2 foundation beta -%]
|