51

(22 replies, posted in PunBB 1.2 show off)

The banner is fine, maybe just a few sport images.

52

(22 replies, posted in PunBB 1.2 show off)

Very nice looking site, I like the skin, but it needs a few adjustments.

53

(48 replies, posted in News)

Dr.Jeckyl wrote:

How many times have we been through the reasoning behind Rickard and the dev teams way of versioning PunBB? tongue

I don't know but I'm sure your gonna tell us.

54

(3 replies, posted in PunBB 1.2 show off)

Problem sorted out.

55

(3 replies, posted in PunBB 1.2 show off)

Smartys wrote:

Mmm, looks a bit messed up in IE and FF. In IE, the navlinks don't match up with the lines (personally, I don't like that layout in any case). Also, in both browsers, the last post column doesn't extend far enough to the right. The space between the blue headers (eg: for category names) and the actual content makes them seem like they're not actually meant to be together.

So critical, yeah something is really messed up with the style, I'm going to bed but I'll fix it soon.

56

(3 replies, posted in PunBB 1.2 show off)

http://openwings.uni.cc/forums

Not much on it now, exams all week so can't work on it too much. Skin acts up sometimes, if anyone knows a fix...

57

(11 replies, posted in PunBB 1.2 show off)

Love the 1.3 for some reason it's not the same

Looks nice, + rep on how your trying smile

59

(3 replies, posted in PunBB 1.2 discussion)

http://img205.imageshack.us/img205/8470/buguq1.png
Might want to fix that tongue Doesn't happen often just refresh and it fixes.

Nice, hope everything works out tongue

61

(11 replies, posted in PunBB 1.3 troubleshooting)

[Read the rest of the posts in the topic please?]

62

(3 replies, posted in PunBB 1.3 troubleshooting)

Lmao styling is so different than 1.2 yikes Any tips tongue?

63

(10 replies, posted in PunBB 1.2 show off)

Beau site, lache pas.

64

(5 replies, posted in PunBB 1.2 show off)

Skin is nice smile

65

(13 replies, posted in General discussion)

Well I'm a little late but oh well, Happy new year everybody.

66

(1 replies, posted in PunBB 1.2 troubleshooting)

Well I restored my database. Everything is fine except that I can't change my BASE URL and I logged out and when I login I can't anymore because it redirects to my other site. how can I solve this.

67

(4 replies, posted in PunBB 1.2 show off)

Yeah I changed web host there was a huge problem.

http://openwings.uni.cc is now the link.

68

(2 replies, posted in PunBB 1.2 troubleshooting)

<?php
 
// Show login if not logged in
if($pun_user['is_guest'])
{
    if(!isset($focus_element) || (isset($focus_element) && !in_array('login', $focus_element)))
    {
 
    // Load the language files
    require PUN_ROOT.'lang/'.$pun_user['language'].'/common.php';
    require PUN_ROOT.'lang/'.$pun_user['language'].'/login.php';
 
    // Try to determine if the data in HTTP_REFERER is valid (if not, we redirect to index.php after login)
    $redirect_url = (isset($_SERVER['HTTP_REFERER']) && preg_match('#^'.preg_quote($pun_config['o_base_url']).'/(.*?)\.php#i', $_SERVER['HTTP_REFERER'])) ? htmlspecialchars($_SERVER['HTTP_REFERER']) : 'index.php';
 
    $required_fields = array('req_username' => $lang_common['Username'], 'req_password' => $lang_common['Password']);
 
?>
                  <div class="block">
 
<h2><span>Login</span></h2>
<div id="login" class="box">
<div class="inbox">             
        <div class="logintop">
            <form id="login" name="login" name="qpost" method="post" action="login.php?action=in" onsubmit="return process_form(this)">
<div style="text-align: center" class="inform">
 
 
 
 
 
 
 
                <p>
                    <input type="hidden" name="form_sent" value="1" />
                    <input type="hidden" name="redirect_url" value="<?php echo $redirect_url ?>" />
                     <?php echo $lang_common['Username'] ?><br />
                    <input type="text" name="req_username" size="16" maxlength="25" /><br /><br />
                     <?php echo $lang_common['Password'] ?><br />
 
 <input type="password" name="req_password" size="16" maxlength="16" wrap="virtual" onkeypress="if(event.keyCode==13) document.login.submit()" /><br /><br />
<input type="submit" name="login" value="<?php echo $lang_common['Login'] ?>" tabindex="3" /><br /><br />
                    <a href="register.php"><?php echo 'Register Now!'; ?></a>
                </p>
 
</div>
            </form>
        </div>
</div>
</div>
</div>
<?php
    }
}

How do I valid this login script.

The errors:

#  Error  Line 100, Column 22: ID "login" already defined.

            <form id="login" name="login" name="qpost" method="post" action="log

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 97, Column 9: ID "login" first defined here.

<div id="login" class="box">

# Error Line 100, Column 34: there is no attribute "name".

            <form id="login" name="login" name="qpost" method="post" action="log

?

You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).

This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.

How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.
# Error Line 100, Column 47: duplicate specification of attribute "name".

?  <form id="login" name="login" name="qpost" method="post" action="login.php?

?

You have specified an attribute more than once. Example: Using the "height" attribute twice on the same "img" tag.
# Error Line 116, Column 74: there is no attribute "wrap".

?sword" size="16" maxlength="16" wrap="virtual" onkeypress="if(event.keyCode==

?

You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).

This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.

How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.
# Error Line 154, Column 78: document type does not allow element "script" here.

?s.com/urchin.js" type="text/javascript">

?

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
# Error Line 156, Column 30: document type does not allow element "script" here.

<script type="text/javascript">

?

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
# Error Line 100, Column > 80: XML Parsing Error: Attribute name redefined.

?ame="qpost" method="post" action="login.php?action=in" onsubmit="return proce?

69

(5 replies, posted in General discussion)

Thanks for both of you but I used bingiman's topic thingy. Only 7 errors  to go now.

# Line 103, Column 22: ID "login" already defined.

            <form id="login" name="login" name="qpost" method="post" action="log

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 100, Column 9: ID "login" first defined here.

<div id="login" class="box">

# Error Line 103, Column 34: there is no attribute "name".

            <form id="login" name="login" name="qpost" method="post" action="log

?

You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).

This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.

How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.
# Error Line 103, Column 47: duplicate specification of attribute "name".

?  <form id="login" name="login" name="qpost" method="post" action="login.php?

?

You have specified an attribute more than once. Example: Using the "height" attribute twice on the same "img" tag.

How do I fix that, it's the same problem I think?

Login code:

<?php
 
// Show login if not logged in
if($pun_user['is_guest'])
{
    if(!isset($focus_element) || (isset($focus_element) && !in_array('login', $focus_element)))
    {
 
    // Load the language files
    require PUN_ROOT.'lang/'.$pun_user['language'].'/common.php';
    require PUN_ROOT.'lang/'.$pun_user['language'].'/login.php';
 
    // Try to determine if the data in HTTP_REFERER is valid (if not, we redirect to index.php after login)
    $redirect_url = (isset($_SERVER['HTTP_REFERER']) && preg_match('#^'.preg_quote($pun_config['o_base_url']).'/(.*?)\.php#i', $_SERVER['HTTP_REFERER'])) ? htmlspecialchars($_SERVER['HTTP_REFERER']) : 'index.php';
 
    $required_fields = array('req_username' => $lang_common['Username'], 'req_password' => $lang_common['Password']);
 
?>
                  <div class="block">
 
<h2><span>Login</span></h2>
<div id="login" class="box">
<div class="inbox">             
        <div class="logintop">
            <form id="login" name="login" name="qpost" method="post" action="login.php?action=in" onsubmit="return process_form(this)">
<div style="text-align: center" class="inform">
 
 
 
 
 
 
 
                <p>
                    <input type="hidden" name="form_sent" value="1" />
                    <input type="hidden" name="redirect_url" value="<?php echo $redirect_url ?>" />
                     <?php echo $lang_common['Username'] ?><br />
                    <input type="text" name="req_username" size="16" maxlength="25" /><br /><br />
                     <?php echo $lang_common['Password'] ?><br />
 
 <input type="password" name="req_password" size="16" maxlength="16" wrap="virtual" onkeypress="if(event.keyCode==13) document.login.submit()" /><br /><br />
<input type="submit" name="login" value="<?php echo $lang_common['Login'] ?>" tabindex="3" /><br /><br />
                    <a href="register.php"><?php echo 'Register Now!'; ?></a>
                </p>
 
</div>
            </form>
        </div>
</div>
</div>
</div>
<?php
    }
}

70

(5 replies, posted in General discussion)

Thanks a lot, I'll try it out tomorrw morning and I'll tell you if it works.

I've never had errors like this before. I've just install a fresh punbb and added colorusergroup (which is valid) and a portal.

# Line 71, Column 12: ID "navindex" already defined.

                <li id="navindex"><a href="index.php">Index</a></li>

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 51, Column 12: ID "navindex" first defined here.

                <li id="navindex"><a href="index.php">Index</a></li>

# Error Line 72, Column 12: ID "navextra1" already defined.

                <li id="navextra1"><a href="forum.php">Forums</a></li>

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 52, Column 12: ID "navextra1" first defined here.

                <li id="navextra1"><a href="forum.php">Forums</a></li>

# Error Line 73, Column 12: ID "navuserlist" already defined.

                <li id="navuserlist"><a href="userlist.php">User list</a></li>

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 53, Column 12: ID "navuserlist" first defined here.

                <li id="navuserlist"><a href="userlist.php">User list</a></li>

# Error Line 74, Column 12: ID "navsearch" already defined.

                <li id="navsearch"><a href="search.php">Search</a></li>

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 54, Column 12: ID "navsearch" first defined here.

                <li id="navsearch"><a href="search.php">Search</a></li>

# Error Line 75, Column 12: ID "navregister" already defined.

                <li id="navregister"><a href="register.php">Register</a></li>

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 55, Column 12: ID "navregister" first defined here.

                <li id="navregister"><a href="register.php">Register</a></li>

# Error Line 76, Column 12: ID "navlogin" already defined.

                <li id="navlogin"><a href="login.php">Login</a></li>

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 56, Column 12: ID "navlogin" first defined here.

                <li id="navlogin"><a href="login.php">Login</a></li>

# Error Line 103, Column 22: ID "login" already defined.

            <form id="login" name="login" name="qpost" method="post" action="log

?

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
# Info Line 100, Column 9: ID "login" first defined here.

<div id="login" class="box">

# Error Line 103, Column 34: there is no attribute "name".

            <form id="login" name="login" name="qpost" method="post" action="log

?

You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).

This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.

How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.
# Error Line 103, Column 47: duplicate specification of attribute "name".

?  <form id="login" name="login" name="qpost" method="post" action="login.php?

?

You have specified an attribute more than once. Example: Using the "height" attribute twice on the same "img" tag.
# Error Line 119, Column 74: there is no attribute "wrap".

?sword" size="16" maxlength="16" wrap="virtual" onkeypress="if(event.keyCode==

?

You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).

This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.

How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.
# Error Line 138, Column 17: element "pun_users_online" undefined.

<pun_users_online>

?

You have used the element named above in your document, but the document type you are using does not define an element of that name. This error is often caused by:

    * incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Frameset" document type to get the "<frameset>" element),
    * by using vendor proprietary extensions such as "<spacer>" or "<marquee>" (this is usually fixed by using CSS to achieve the desired effect instead).
    * by using upper-case tags in XHTML (in XHTML attributes and elements must be all lower-case).

# Error Line 150, Column 5: end tag for "pun_users_online" omitted, but OMITTAG NO was specified.

</div>

?

You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".
# Info Line 138, Column 0: start tag was here.

<pun_users_online>

# Error Line 154, Column 85: document type does not allow element "script" here.

?com/urchin.js" type="text/javascript">

?

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
# Error Line 156, Column 30: document type does not allow element "script" here.

<script type="text/javascript">

?

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
# Error Line 103, Column > 80: XML Parsing Error: Attribute name redefined.

?ame="qpost" method="post" action="login.php?action=in" onsubmit="return proce?

?
# Error Line 150, Column 6: XML Parsing Error: Opening and ending tag mismatch: pun_users_online line 138 and div.

</div>

?
# Error Line 153, Column 7: XML Parsing Error: Opening and ending tag mismatch: div line 40 and body.

</body>

?
# Error Line 154, Column 7: XML Parsing Error: Opening and ending tag mismatch: body line 38 and html.

</html><script src="http://www.google-analytics.com/urchin.js" type="text/javasc

?
# Error Line 159, Column 9: XML Parsing Error: Premature end of data in tag html line 3.

</script>

72

(21 replies, posted in PunBB 1.2 discussion)

Oh I see where i went wrong, but still having trouble lol but I'll get it to work soon.
Fixed it Thanks alot.

73

(21 replies, posted in PunBB 1.2 discussion)

my navigation and More Links is on the bottom of the page.

Example: http://openwings.freeweb7.com/index.php

74

(21 replies, posted in PunBB 1.2 discussion)

I did read http://openwings.co.nr the portal is on the bottom and I also got to know how to define the port.tpl correctly on the index.

75

(21 replies, posted in PunBB 1.2 discussion)

Index:

<?php
define('PUN_INDEX', 1);
define('PUN_ROOT', './');
define PUN_ROOT.'include/template/portal.tpl';
require PUN_ROOT.'include/common.php';
 
// Set the page title here
$page_title = pun_htmlspecialchars($pun_config['o_board_title']) . ' / Index';
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/parser.php';

// Load the forums.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php';

if($pun_user['g_id'] == PUN_GUEST) {
    echo '<div class="block"><h2 class="welcome"><span>Welcome</span></h2><div class="box"><div class="inbox"><div class="welcome_message">Welcome to the forums. You are currently considered a guest. In order to gain full access to our forum features you must be logged in. Be sure to either <a href="login.php">Login</a>, or <a href="register.php">Register</a>.</div></div></div></div>';
}

// News Information
$news_limit = '3'; 
$forum_id = '1';
$order_by = 't.posted';
// Retrieve News From Database
$db_news = $db->query('SELECT t.id, t.subject, t.num_replies, t.num_views, t.forum_id, p.topic_id, p.poster, p.poster_id, p.message, p.hide_smilies, p.id AS pid, p.posted, g.g_id, g.g_title FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id AND p.posted=t.posted INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id  LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE t.forum_id='.$forum_id.' AND t.moved_to IS NULL AND f.redirect_url IS NULL ORDER BY '.$order_by.' DESC LIMIT '.$news_limit) or error('Unable to fetch the news', __FILE__, __LINE__, $db->error());



if($db->num_rows($db_news))
{
    while($news = $db->fetch_assoc($db_news))
    {
        // Set Some Variables
        $message = parse_message($news['message'], $news['hide_smilies']);
        $subject = $news['subject'];
        $poster = '<span class="'.$news['g_title'].'"><a href="profile.php?id='.$news['poster_id'].'">'.$news['poster'].'</a></span>';
        $date_posted = gmdate('F jS, Y', $news['posted']);
        $news_id = $news['id'];
        if($pun_user['g_id'] == PUN_ADMIN) {
            $news_options = '<a href="viewtopic.php?id='.$news_id.'">View Post</a> | <a href="edit.php?id='.$news['pid'].'">Edit Post</a> | <a href="delete.php?id='.$news['pid'].'">Delete Post</a>';
        }
        else  
            $news_options = '<a href="viewtopic.php?id='.$news['id'].'">View Post</a>';
            
        if($pun_user['g_id'] == PUN_ADMIN) {
            $global_news_options = '<div class="block"><div class="box"><div class="inbox" style="text-align: center;"><a href="viewforum.php?id='.$news['forum_id'].'">View All News</a> | <a href="moderate.php?fid='.$news['forum_id'].'">Moderate News</a> | <a href="post.php?fid='.$news['forum_id'].'">Post News Topic</a></div></div></div>';
        }
        else if($pun_user['g_id'] != PUN_GUEST) {
            $global_news_options = '<div class="block" id="news_global_options"><div class="box"><div class="inbox" style="text-align: center;"><a href="viewforum.php?id='.$news['forum_id'].'">View All News</a></div></div></div>';
        }
        else
            $global_news_options = '';
        
        if($pun_user['g_id'] != PUN_GUEST) {
            $news_output = '<div class="blocktable" style="margin-bottom: 12px;"><h2 class="news_subject"><span>'.$subject.'</span></h2><div class="box"><div class="inbox"><table cellspacing="0"><thead><tr><th class="tcl" id="news_header">Posted By: '.$poster.' | Date Posted: '.$date_posted.'</th></tr></thead><tbody><tr><td class="tcl"><div class="news_message">'.$message.'</div></td></tr></tbody><thead><tr><th class="tcl" id="news_footer">'.$news_options.'</th></tr></thead></table></div></div></div>';
        }
        else
            $news_output = '<div class="blocktable" style="margin-bottom: 12px;"><h2 class="news_subject"><span>'.$subject.'</span></h2><div class="box"><div class="inbox"><table cellspacing="0"><thead><tr><th class="tcl" style="text-align: center;">Posted By: '.$poster.' | Date Posted: '.$date_posted.'</th></tr></thead><tbody><tr><td class="tcl"><div class="news_message">'.$message.'</div></td></tr></tbody></table></div></div></div>';
        
        echo $news_output;
    }
    echo $global_news_options;
}

// Require the footer
require PUN_ROOT.'footer.php';

Base.css:

/****************************************************************/

/* 1. INITIAL SETTINGS */

/****************************************************************/



.pun TABLE, .pun DIV, .pun FORM, .pun P, .pun H1, .pun H2, .pun H3,

.pun H4, .pun PRE, .pun BLOCKQUOTE, .pun UL, .pun OL, .pun LI, .pun DL,

.pun DT, .pun DD, .pun TH, .pun TD, .pun FIELDSET, .pun IMG {

    MARGIN: 0px;

    PADDING: 0px;

    FONT-WEIGHT: normal;

    LIST-STYLE: none;

}



.pun IMG {BORDER: none}



.pun INPUT, .pun SELECT, .pun TEXTAREA, .pun OPTGROUP {MARGIN: 0}



/****************************************************************/

/* 2. STRUCTURAL SETTINGS - VERY IMPORTANT - DO NOT CHANGE */

/****************************************************************/



/* 2.1 Clearing floats and invisible items */

.pun .clearer, .pun .nosize {

    HEIGHT: 0;

    WIDTH: 0;

    LINE-HEIGHT: 0;

    FONT-SIZE: 0;

    OVERFLOW: hidden

}



.pun .clearer, .pun .clearb {CLEAR: both}

.pun .nosize {POSITION: absolute; LEFT: -10000px}



/* 2.2 Overflow settings for posts */



DIV.blockpost DIV.box, DIV.postleft, DIV.postsignature, DIV.postmsg {OVERFLOW: hidden}



/****************************************************************/

/* 3. BUG FIXES - VERY IMPORTANT - DO NOT CHANGE */

/****************************************************************/



/* 3.1 This attempts to eliminate rounding errors in Gecko browsers. */



DIV>DIV>DIV.postfootleft, DIV>DIV>DIV.postfootright {PADDING-TOP: 1px; MARGIN-TOP: -1px}



/* 3.2 This is only visible to IE6 Windows and cures various bugs. Do not alter comments */



/* Begin IE6Win Fix \*/

* HTML .inbox, * HTML .inform, * HTML .pun, * HTML .intd, * HTML .tclcon {HEIGHT: 1px}

* HTML .inbox DIV.postmsg {WIDTH: 98%}

/* End of IE6Win Fix */



/* 3.3 This is the equivelant of 3.2 but for IE7. It is visible to other browsers

but does no harm */



/*Begin IE7Win Fix */

.pun, .pun .inbox, .pun .inform, .pun .intd, .pun .tclcon {min-height: 1px}

/* End of IE7Win Fix */



/****************************************************************/

/* 4. HIDDEN ELEMENTS */

/****************************************************************/



/* These are hidden in normal display. Add comments to make them visible */



#brdfooter H2, #brdstats H2, #brdstats .conl DT, #brdstats .conr DT,

#modcontrols DT, #searchlinks DT, DIV.postright H3 {

    POSITION: absolute;

    DISPLAY: block;

    OVERFLOW: hidden;

    WIDTH: 1em;

    LEFT: -999em

}



/****************************************************************/

/* 5. BOX CONTAINERS AND FLOATS */

/****************************************************************/



/* 5.1. Setup all left and right content using floats. */  



.conr {

    FLOAT: right;

    TEXT-ALIGN: right;

    CLEAR: right;

    WIDTH: 40%

}



.conl {

    FLOAT: left;

    WIDTH: 55%;

    OVERFLOW: hidden;

    WHITE-SPACE: nowrap

}



LABEL.conl {

    WIDTH: auto;

    OVERFLOW: visible;

    MARGIN-RIGHT: 10px

}



/* 5.2 Set up page numbering and posts links */



DIV.linkst .conl, DIV.linksb .conl, DIV.postlinksb .conl {WIDTH:18em}



DIV.linkst .conr, DIV.linksb .conr, DIV.postlinksb .conr {WIDTH:16em}



FORM DIV.linksb .conr {WIDTH: 32em}



/* 5.3 Keep breadcrumbs from shifting to the right when wrapping */



.linkst UL, linksb UL, .postlinksb UL {MARGIN-LEFT: 18em}



/* 5.4 Settings for Profile and Admin interface.*/



DIV.block2col {PADDING-BOTTOM: 1px}



DIV.block2col DIV.blockform, DIV.block2col DIV.block, #viewprofile DD {MARGIN-LEFT: 14em}



DIV.blockmenu, #viewprofile DT {

    FLOAT:left;

    WIDTH: 13em

}



#profileavatar IMG {

    FLOAT: right;

    MARGIN-LEFT: 1em

}



#viewprofile DL {FLOAT: left; WIDTH: 100%; OVERFLOW: hidden}



/****************************************************************/

/* 6. TABLE SETUP */

/****************************************************************/



/* 6.1 Table Basic Setup */



.pun TABLE {WIDTH: 100%}



/* 6.2 Fixed Table Setup */



#punindex TABLE, #vf TABLE {TABLE-LAYOUT: fixed}



.tcl {TEXT-ALIGN: left; WIDTH: 50%}



.tc2, .tc3, .tcmod {WIDTH: 9%; TEXT-ALIGN: center}



.tcr {WIDTH: 32%; TEXT-ALIGN: left}



#punsearch #vf .tcl, #punmoderate #vf .tcl {WIDTH: 41%}



#punsearch #vf .tc2 {WIDTH: 18%; TEXT-ALIGN: left}



.tcl, .tcr {OVERFLOW: HIDDEN}



/* 6.3 Other Table Setup */



#users1 .tcl {WIDTH: 40%}



#users1 .tcr {WIDTH: 25%}



#users1 .tc2 {WIDTH: 25%; TEXT-ALIGN: left}



#users1 .tc3 {WIDTH: 10%; TEXT-ALIGN: center}



#debug .tcr {WIDTH: 85%; WHITE-SPACE: normal}



#punindex TD.tcr SPAN.byuser {DISPLAY: block}



/****************************************************************/

/* 7. VIEWTOPIC SETUP */

/****************************************************************/



/* 7.1 This is the basic structure. */



DIV.postleft, DIV.postfootleft {

    FLOAT:left;

    WIDTH: 18em;

    OVERFLOW: hidden;

    POSITION: relative;

}

    

DIV.postright, DIV.postfootright {

    BORDER-LEFT-WIDTH: 18em;

    BORDER-LEFT-STYLE: solid

}



DIV.postfootright, P.multidelete {TEXT-ALIGN: right}



DIV.blockpost>DIV>DIV.inbox {PADDING-BOTTOM: 1px}



/* 7.3 This is the div which actually contains the post and is inside .postright */



DIV.postmsg {WIDTH:100%}



/* 7.4 These items control overflow and scrolling within posts. */



DIV.incqbox {WIDTH: 100%; OVERFLOW: hidden}

DIV.scrollbox {WIDTH: 100%; OVERFLOW: auto}

IMG.postimg {max-width: 100%}

A .postimg {max-width: 100%}



/* 7.5 Turn off the poster information column for preview */



#postpreview DIV.postright {BORDER-LEFT: none}



/* 7.6 Create the horizontal line above signatures */



DIV.postsignature HR {

    MARGIN-LEFT: 0px;

    WIDTH: 200px;

    TEXT-ALIGN: left;

    HEIGHT: 1px;

    BORDER:none

}



/* 7.7 Maximum height for search results as posts. Position go to post link */



DIV.searchposts DIV.postmsg {HEIGHT: 8em}

DIV.searchposts DD P {PADDING-TOP: 3em}



/* 7.8 Class for bbcode [u] */



SPAN.bbu {TEXT-DECORATION: underline}



/****************************************************************/

/* 8. LISTS SPECIAL SETTINGS */

/****************************************************************/



/* 8.1 Horizontal display of online list, main navigation menu and breadcrumbs */



#onlinelist DD, #onlinelist DT, #brdmenu LI, DIV.linkst LI, DIV.linksb LI, DIV.postlinksb LI,

DIV.postfootright LI, UL.bblinks LI {

    DISPLAY: inline;

    HEIGHT: 0

}



/* 8.2 Turn on square icon for posterror list */



#posterror UL LI {LIST-STYLE: square inside}



/* 8.3 Right alignment of descriptions in ordinary member view of other members profiles */



#viewprofile DT {TEXT-ALIGN: right}



/****************************************************************/

/* 9. FORM SETTINGS */

/****************************************************************/



/* 9.1 Makes textareas and long text inputs shrink with page */



DIV.txtarea {WIDTH: 75%}



DIV.txtarea TEXTAREA, INPUT.longinput {WIDTH: 100%}



.pun LABEL {DISPLAY: block}



#qjump SELECT {WIDTH: 50%}



/****************************************************************/

/* 10. HELP FILES AND MISC. */

/****************************************************************/



/* 10.1 Put some space between sections of the help file */



#helpfile H2 {MARGIN-TOP: 12px}



/* 10.2 Internal padding */



#helpfile DIV.box {PADDING: 10px}



/* 10.3 Other templates */



#punredirect DIV.block, #punmaint DIV.block {MARGIN: 50px 20% 12px 20%}



/****************************************************************/

/* 11. ARCADE STYLING. */

/****************************************************************/



#a-stats #in-a-stats {padding: 10px 5px;}

#a-stats ul li {margin-top: 2px;}

#a-stats #a-left, #a-stats #a-right {width: 20%;}

#a-stats #a-center {width: 60%;}

#a-stats table td {border: none;vertical-align: top;}

#a-stats fieldset, #a-stats #highscorechamps, #a-stats #lastesthighscore {padding: 10px;margin-bottom: 10px;} 

#a-stats #lastesthighscore {margin-bottom: 0;}

#a-stats #highscorechamps td {width: 33%;text-align: center;}

#a-stats #random {text-align: center;}

#a-stats #random img, .gameimg img {border: 1px solid #555;}

#a-stats #lastscore {padding: 10px;text-align: center;}

#gamelist table .gameimg td {border: none;}

/****************************************************************/

/* 12. PORTAL STYLING. */

/****************************************************************/

h2.news_subject, h2.welcome, #news_header, #news_footer {
    text-align: center;
}
table div.news_message, div.welcome_message {
    padding: 4px 6px;
}
#news_global_options {
    margin-bottom: 12px;
}
#left {
    width: 200px;
    overflow: hidden;
    float: left;
}
#right {
    width: 200px;
    overflow: hidden;
    float: right;
}
#main {
    margin-left: 212px;
    margin-right: 212px;
}

portal.tpl is what you told me to write.