- ชื่อ: Avatar Select on Register
- ผู้เขียน: vbgamer45
- นำเสนอโดย: DexMoreGroup
- ประเภท: Registration and Login
- รองรับ: SMF 1.1.xx, 2.0.xx
- ปรับปรุงล่าสุด: 8 มีนาคม 2553
- ต้นฉบับ: Avatar Select on Register
รายละเอียด เพิ่มตัวเลือกรูปส่วนให้ผู้สมัครสมาชิกเลือกในขณะที่ทำการลงทะเบียนเป็นสมาชิกในบอร์ดของเรา
ตัวอย่าง
แก้ไขไฟล์:file Themes/default/Register.template.php
ค้นหา -->>
// Are there age restrictions in place?
if (!empty($modSettings['coppaAge']))
ขออภัย! ท่านไม่สามารถเข้าถึงข้อมูลส่วนนี้ได้ กรุณาอ่าน เงื่อนไขการใช้งาน DexMore.Com ค้นหา -->>
// Uncheck the agreement thing....
if ($context['require_agreement'])
เพิ่มไว้ก่อน -->>
echo '
<script language="JavaScript" type="text/javascript">';
echo '
<!-- // -->'. chr(60) . chr(33) . chr(91) . chr(67) . chr(68) . chr(65) . chr(84) . chr(65) . chr(91);
echo '
var files = ["' . implode('", "', $context['avatar_list']) . '"];
var avatar = document.getElementById("avatar");
var cat = document.getElementById("cat");
var selavatar = "";
var avatardir = "' . $modSettings['avatar_url'] . '/";
var size = avatar.alt.substr(3, 2) + " " + avatar.alt.substr(0, 2) + String.fromCharCode(117, 98, 116);
var file = document.getElementById("file");
if (avatar.src.indexOf("blank.gif") > -1)
changeSel(selavatar);
else
previewExternalAvatar(avatar.src)
function changeSel(selected)
{
if (cat.selectedIndex == -1)
return;
if (cat.options[cat.selectedIndex].value.indexOf("/") > 0)
{
var i;
var count = 0;
file.style.display = "inline";
file.disabled = false;
for (i = file.length; i >= 0; i = i - 1)
file.options[i] = null;
for (i = 0; i < files.length; i++)
if (files[i].indexOf(cat.options[cat.selectedIndex].value) == 0)
{
var filename = files[i].substr(files[i].indexOf("/") + 1);
var showFilename = filename.substr(0, filename.lastIndexOf("."));
showFilename = showFilename.replace(/[_]/g, " ");
file.options[count] = new Option(showFilename, files[i]);
if (filename == selected)
{
if (file.options.defaultSelected)
file.options[count].defaultSelected = true;
else
file.options[count].selected = true;
}
count++;
}
if (file.selectedIndex == -1 && file.options[0])
file.options[0].selected = true;
showAvatar();
}
else
{
file.style.display = "none";
file.disabled = true;
document.getElementById("avatar").src = avatardir + cat.options[cat.selectedIndex].value;
document.getElementById("avatar").style.width = "";
document.getElementById("avatar").style.height = "";
}
}
function showAvatar()
{
if (file.selectedIndex == -1)
return;
document.getElementById("avatar").src = avatardir + file.options[file.selectedIndex].value;
document.getElementById("avatar").alt = file.options[file.selectedIndex].text;
document.getElementById("avatar").alt += file.options[file.selectedIndex].text == size ? "!" : "";
document.getElementById("avatar").style.width = "";
document.getElementById("avatar").style.height = "";
}
function previewExternalAvatar(src)
{
if (!document.getElementById("avatar"))
return;
var maxHeight = ', !empty($modSettings['avatar_max_height_external']) ? $modSettings['avatar_max_height_external'] : 0, ';
var maxWidth = ', !empty($modSettings['avatar_max_width_external']) ? $modSettings['avatar_max_width_external'] : 0, ';
var tempImage = new Image();
tempImage.src = src;
if (maxWidth != 0 && tempImage.width > maxWidth)
{
document.getElementById("avatar").style.height = parseInt((maxWidth * tempImage.height) / tempImage.width) + "px";
document.getElementById("avatar").style.width = maxWidth + "px";
}
else if (maxHeight != 0 && tempImage.height > maxHeight)
{
document.getElementById("avatar").style.width = parseInt((maxHeight * tempImage.width) / tempImage.height) + "px";
document.getElementById("avatar").style.height = maxHeight + "px";
}
document.getElementById("avatar").src = src;
}';
echo '
//' . chr(93) . chr(93) . chr(62);
echo '
</script>';
file Sources/Register.php
ค้นหา -->>
// Collect all extra registration fields someone might have filled in.
เพิ่มไว้ก่อน -->>
ขออภัย! ท่านไม่สามารถเข้าถึงข้อมูลส่วนนี้ได้ กรุณาอ่าน เงื่อนไขการใช้งาน DexMore.Comค้นหา -->>
'extra_register_vars' => array(),
เพิ่มไว้ก่อน -->>
'avatar' => $_POST['avatar'],
ค้นหา -->>
?>
เพิ่มไว้ก่อน -->>
// Recursive function to retrieve avatar files
function getAvatars($directory, $level)
{
global $context, $txt, $modSettings;
if (!isset($context['member']['avatar']['server_pic']))
$context['member']['avatar']['server_pic'] = '';
$result = array();
// Open the directory..
$dir = dir($modSettings['avatar_directory'] . (!empty($directory) ? '/' : '') . $directory);
$dirs = array();
$files = array();
if (!$dir)
return array();
while ($line = $dir->read())
{
if (in_array($line, array('.', '..', 'blank.gif', 'index.php')))
continue;
if (is_dir($modSettings['avatar_directory'] . '/' . $directory . (!empty($directory) ? '/' : '') . $line))
$dirs[] = $line;
else
$files[] = $line;
}
$dir->close();
// Sort the results...
natcasesort($dirs);
natcasesort($files);
if ($level == 0)
{
$result[] = array(
'filename' => 'blank.gif',
'checked' => in_array($context['member']['avatar']['server_pic'], array('', 'blank.gif')),
'name' => &$txt[422],
'is_dir' => false
);
}
foreach ($dirs as $line)
{
$tmp = getAvatars($directory . (!empty($directory) ? '/' : '') . $line, $level + 1);
if (!empty($tmp))
$result[] = array(
'filename' => htmlspecialchars($line),
'checked' => strpos($context['member']['avatar']['server_pic'], $line . '/') !== false,
'name' => '[' . htmlspecialchars(str_replace('_', ' ', $line)) . ']',
'is_dir' => true,
'files' => $tmp
);
unset($tmp);
}
foreach ($files as $line)
{
$filename = substr($line, 0, (strlen($line) - strlen(strrchr($line, '.'))));
$extension = substr(strrchr($line, '.'), 1);
// Make sure it is an image.
if (strcasecmp($extension, 'gif') != 0 && strcasecmp($extension, 'jpg') != 0 && strcasecmp($extension, 'jpeg') != 0 && strcasecmp($extension, 'png') != 0 && strcasecmp($extension, 'bmp') != 0)
continue;
$result[] = array(
'filename' => htmlspecialchars($line),
'checked' => $line == $context['member']['avatar']['server_pic'],
'name' => htmlspecialchars(str_replace('_', ' ', $filename)),
'is_dir' => false
);
if ($level == 1)
$context['avatar_list'][] = $directory . '/' . $line;
}
return $result;
}
file Sources/Subs-Members.php
ค้นหา -->>
// No name?! How can you register with no name?
if (empty($regOptions['username']))
fatal_lang_error(37, false);
เพิ่มไว้หลัง -->>
// No avatar?! You need to get an avatar!
if (empty($regOptions['avatar']) && $_REQUEST['action'] == 'register2')
fatal_error('An avatar is required! Please select one.', false);
ค้นหา -->>
'avatar' => "''",
แก้เป็น -->>
'avatar' => "'$regOptions[avatar]'",
ลิงค์หัวข้อ:
http://dexmore.com/topic/286