You're going to have to figure out the rest, but I figured it out for the password problem. I personally don't think it's user friendly to make people repeat passwords, and studies have shown that you get many more conversions with fewer fields. Anyway, onto it.
This will only affect the
Join page itself, though there's one downside after registration: when changing your password, it will still require you to repeat your password. That's intended. But if you type the second password incorrectly, the error message will indicate you didn't type a correct password (showing an error for the first password field), instead of telling you they don't match. Just an error message problem, everything else stays the same.
Files to edit:
ow_system_plugins/base/views/controllers/
join_index.html
ow_system_plugins/base/controllers/
join.php
ow_system_plugins/base/classes/
password_validator.php
In join_index.html, find:
{if $question.name=='password'}
<tr class="{if $smarty.foreach.question.last}ow_tr_last{/if}">
<td class="{if !empty($question.trClass) && $question.trClass == 'ow_alt1'}ow_alt2{else}ow_alt1{/if} ow_label">
{label name='repeatPassword'}
</td>
<td class="{if !empty($question.trClass) && $question.trClass == 'ow_alt1'}ow_alt2{else}ow_alt1{/if} ow_value">
{input name='repeatPassword'}
<div style="height:1px;"></div>
{error name='repeatPassword'}
</td>
<td class="{if !empty($question.trClass) && $question.trClass == 'ow_alt1'}ow_alt2{else}ow_alt1{/if} ow_desc">
{question_description_lang name='repeatPassword'}
</td>
</tr>
{/if}
Either remove everything between the {if} {/if} statement, or replace with:
{if $question.name=='password'}
<tr class="{if $smarty.foreach.question.last}ow_tr_last{/if}" style="display:none;">
<td class="{if !empty($question.trClass) &&
$question.trClass == 'ow_alt1'}ow_alt2{else}ow_alt1{/if} ow_label">
{label name='repeatPassword'}
</td>
<td class="{if !empty($question.trClass) &&
$question.trClass == 'ow_alt1'}ow_alt2{else}ow_alt1{/if} ow_value">
{input name='repeatPassword'}
<div style="height:1px;"></div>
{error name='repeatPassword'}
</td>
<td class="{if !empty($question.trClass) &&
$question.trClass == 'ow_alt1'}ow_alt2{else}ow_alt1{/if} ow_desc">
{question_description_lang name='repeatPassword'}
</td>
</tr>
{/if}
join.php, Line 929:
$passwordRepeat->setRequired((string) $question['required'] === '1');
Change the '1' to a '0'
$passwordRepeat->setRequired((string) $question['required'] === '0');
password_validator.php, Line 65:
return false;
Replace with true
return true;
I would also recommend using something like hideShowPassword so that users can see the password they enter by toggling it on/off:
https://github.com/cloudfour/hideShowPassword
There's a plugin in the store for that, but I don't think it's worth paying for when it's easy enough to add manually.