2.0 Update Part 4

Started by Thantos, December 10, 2007, 12:45:36 AM

Previous topic - Next topic

Gary

Quote from: motumbo on February 05, 2008, 09:22:35 PM
OK.  Good, I got some info. You may be for tableless layouts (except for tabular data--something nobody argues with), but what is going to be in SMF 2.0?
We are planning for that kind of template in 2.0. I dont know when it'll be implemented, but last I heard it'd be Beta 3.

Quote from: motumbo on February 05, 2008, 09:22:35 PM
Is SMF 2.0 template system pretty much going to be similar in design to 1.1.x?  That's what I need to know.
You will still need to echo' stuff off as it is now if thats what you're asking.
Gary M. Gadsdon
Do NOT PM me unless I say so
War of the Simpsons
Bongo Comics Fan Forum
Youtube Let's Plays

^ YT is changing monetisation policy, help reach 1000 sub threshold.

motumbo

Quote from: Gazmanafc on February 05, 2008, 09:30:27 PM
Quote from: motumbo on February 05, 2008, 09:22:35 PM
OK.  Good, I got some info. You may be for tableless layouts (except for tabular data--something nobody argues with), but what is going to be in SMF 2.0?
We are planning for that kind of template in 2.0. I dont know when it'll be implemented, but last I heard it'd be Beta 3.

I sure hope so!  :D

Quote from: Gazmanafc on February 05, 2008, 09:30:27 PM
Quote from: motumbo on February 05, 2008, 09:22:35 PM
Is SMF 2.0 template system pretty much going to be similar in design to 1.1.x?  That's what I need to know.
You will still need to echo' stuff off as it is now if thats what you're asking.


// The main sub template above the content.
function template_main_above()
{
global $context, $settings, $options, $scripturl, $txt, $modSettings;

// Show right to left and the character set for ease of translating.
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"', $context['right_to_left'] ? ' dir="rtl"' : '', '><head>
<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />
<meta name="description" content="', $context['page_title'], '" />', empty($context['robot_no_index']) ? '' : '
<meta name="robots" content="noindex" />', '
<meta name="keywords" content="PHP, MySQL, bulletin, board, free, open, source, smf, simple, machines, forum" />
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/script.js?fin11"></script>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var smf_theme_url = "', $settings['theme_url'], '";
var smf_images_url = "', $settings['images_url'], '";
var smf_scripturl = "', $scripturl, '";
var smf_iso_case_folding = ', $context['server']['iso_case_folding'] ? 'true' : 'false', ';
var smf_charset = "', $context['character_set'], '";
// ]]></script>
<title>', $context['page_title'], '</title>';

// The ?fin11 part of this link is just here to make sure browsers don't cache it wrongly.
echo '
<link rel="stylesheet" type="text/css" href="', $settings['theme_url'], '/style.css?fin11" />
<link rel="stylesheet" type="text/css" href="', $settings['default_theme_url'], '/print.css?fin11" media="print" />';

/* Internet Explorer 4/5 and Opera 6 just don't do font sizes properly. (they are big...)
Thus, in Internet Explorer 4, 5, and Opera 6 this will show fonts one size smaller than usual.
Note that this is affected by whether IE 6 is in standards compliance mode.. if not, it will also be big.
Standards compliance mode happens when you use xhtml... */
if ($context['browser']['needs_size_fix'])
echo '
<link rel="stylesheet" type="text/css" href="', $settings['default_theme_url'], '/fonts-compat.css" />';

// Show all the relative links, such as help, search, contents, and the like.
echo '
<link rel="help" href="', $scripturl, '?action=help" target="_blank" />
<link rel="search" href="' . $scripturl . '?action=search" />
<link rel="contents" href="', $scripturl, '" />';

// If RSS feeds are enabled, advertise the presence of one.
if (!empty($modSettings['xmlnews_enable']))
echo '
<link rel="alternate" type="application/rss+xml" title="', $context['forum_name'], ' - RSS" href="', $scripturl, '?type=rss;action=.xml" />';

// If we're viewing a topic, these should be the previous and next topics, respectively.
if (!empty($context['current_topic']))
echo '
<link rel="prev" href="', $scripturl, '?topic=', $context['current_topic'], '.0;prev_next=prev" />
<link rel="next" href="', $scripturl, '?topic=', $context['current_topic'], '.0;prev_next=next" />';

// If we're in a board, or a topic for that matter, the index will be the board's index.
if (!empty($context['current_board']))
echo '
<link rel="index" href="' . $scripturl . '?board=' . $context['current_board'] . '.0" />';

// We'll have to use the cookie to remember the header...
if ($context['user']['is_guest'])
$options['collapse_header'] = !empty($_COOKIE['upshrink']);

// Output any remaining HTML headers. (from mods, maybe?)
echo $context['html_headers'], '

<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var current_header = ', empty($options['collapse_header']) ? 'false' : 'true', ';

function shrinkHeader(mode)
{';

// Guests don't have theme options!!
if ($context['user']['is_guest'])
echo '
document.cookie = "upshrink=" + (mode ? 1 : 0);';
else
echo '
smf_setThemeOption("collapse_header", mode ? 1 : 0, null, "', $context['session_id'], '");';

echo '
document.getElementById("upshrink").src = smf_images_url + (mode ? "/upshrink2.gif" : "/upshrink.gif");

document.getElementById("upshrinkHeader").style.display = mode ? "none" : "";
document.getElementById("upshrinkHeader2").style.display = mode ? "none" : "";

current_header = mode;
}
// ]]></script>';

// the routine for the info center upshrink
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var current_header_ic = ', empty($options['collapse_header_ic']) ? 'false' : 'true', ';

function shrinkHeaderIC(mode)
{';

if ($context['user']['is_guest'])
echo '
document.cookie = "upshrinkIC=" + (mode ? 1 : 0);';
else
echo '
smf_setThemeOption("collapse_header_ic", mode ? 1 : 0, null, "', $context['session_id'], '");';

echo '
document.getElementById("upshrink_ic").src = smf_images_url + (mode ? "/expand.gif" : "/collapse.gif");

document.getElementById("upshrinkHeaderIC").style.display = mode ? "none" : "";

current_header_ic = mode;
}
// ]]></script>
</head>
<body>';

echo '
<div class="tborder" ', $context['browser']['needs_size_fix'] && !$context['browser']['is_ie6'] ? ' style="width: 100%;"' : '', '>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="catbg" height="32">';

if (empty($settings['header_logo_url']))
echo '
<span style="font-family: Verdana, sans-serif; font-size: 140%; ">', $context['forum_name'], '</span>';
else
echo '
<img src="', $settings['header_logo_url'], '" style="margin: 4px;" alt="', $context['forum_name'], '" />';

echo '
</td>
<td align="right" class="catbg">
<img src="', $settings['images_url'], '/smflogo.gif" style="margin: 2px;" alt="" />
</td>
</tr>
</table>';


// display user name
echo '
<table width="100%" cellpadding="0" cellspacing="0" border="0" >
<tr>';

if($context['user']['is_logged'])
echo '
<td class="titlebg2" height="32">
<span style="font-size: 130%;"> ', $txt['hello_member_ndt'], ' <b>', $context['user']['name'] , '</b></span>
</td>';

// display the time
echo '
<td class="titlebg2" height="32" align="right">
<span class="smalltext">' , $context['current_time'], '</span>';

// this is the upshrink button for the user info section
echo '
<a href="#" onclick="shrinkHeader(!current_header); return false;"><img id="upshrink" src="', $settings['images_url'], '/', empty($options['collapse_header']) ? 'upshrink.gif' : 'upshrink2.gif', '" alt="*" title="', $txt['upshrink_description'], '" align="bottom" style="margin: 0 1ex;" /></a>
</td>
</tr>
<tr id="upshrinkHeader"', empty($options['collapse_header']) ? '' : ' style="display: none;"', '>
<td valign="top" colspan="2">
<table width="100%" class="bordercolor" cellpadding="8" cellspacing="1" border="0" style="margin-top: 1px;">
<tr>';

if (!empty($context['user']['avatar']))
echo '
<td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';

echo '
<td colspan="2" width="100%" valign="top" class="windowbg2"><span class="middletext">';

// If the user is logged in, display stuff like their name, new messages, etc.
if ($context['user']['is_logged'])
{
echo '
<a href="', $scripturl, '?action=unread">', $txt['unread_since_visit'], '</a> <br />
<a href="', $scripturl, '?action=unreadreplies">', $txt['show_unread_replies'], '</a><br />';

}
// Otherwise they're a guest - send them a lovely greeting...
else
echo $txt['welcome_guest'];

// Now, onto our second set of info, are they logged in again?
if ($context['user']['is_logged'])
{
// Is the forum in maintenance mode?
if ($context['in_maintenance'] && $context['user']['is_admin'])
echo '
<b>', $txt[616], '</b><br />';

// Are there any members waiting for approval?
if (!empty($context['unapproved_members']))
echo '
', $context['unapproved_members'] == 1 ? $txt['approve_thereis'] : $txt['approve_thereare'], ' <a href="', $scripturl, '?action=viewmembers;sa=browse;type=approve">', $context['unapproved_members'] == 1 ? $txt['approve_member'] : $context['unapproved_members'] . ' ' . $txt['approve_members'], '</a> ', $txt['approve_members_waiting'], '<br />';

// Show the total time logged in?
if (!empty($context['user']['total_time_logged_in']))
{
echo '
', $txt['totalTimeLogged1'];

// If days is just zero, don't bother to show it.
if ($context['user']['total_time_logged_in']['days'] > 0)
echo $context['user']['total_time_logged_in']['days'] . $txt['totalTimeLogged2'];

// Same with hours - only show it if it's above zero.
if ($context['user']['total_time_logged_in']['hours'] > 0)
echo $context['user']['total_time_logged_in']['hours'] . $txt['totalTimeLogged3'];

// But, let's always show minutes - Time wasted here: 0 minutes ;).
echo $context['user']['total_time_logged_in']['minutes'], $txt['totalTimeLogged4'], '<br />';
}
echo ' </span>';
}
// Otherwise they're a guest - this time ask them to either register or login - lazy bums...
else
{
echo ' </span>
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/sha1.js"></script>

<form action="', $scripturl, '?action=login2" method="post" accept-charset="', $context['character_set'], '" class="middletext" style="margin: 3px 1ex 1px 0;"', empty($context['disable_login_hashing']) ? ' onsubmit="hashLoginPassword(this, \'' . $context['session_id'] . '\');"' : '', '>
<input type="text" name="user" size="10" /> <input type="password" name="passwrd" size="10" />
<select name="cookielength">
<option value="60">', $txt['smf53'], '</option>
<option value="1440">', $txt['smf47'], '</option>
<option value="10080">', $txt['smf48'], '</option>
<option value="43200">', $txt['smf49'], '</option>
<option value="-1" selected="selected">', $txt['smf50'], '</option>
</select>
<input type="submit" value="', $txt[34], '" /><br />
<span class="middletext">', $txt['smf52'], '</span>
<input type="hidden" name="hash_passwrd" value="" />
</form>';
}

echo '
</td>
</tr>
</table>
</td>
</tr>
</table>';

echo '
<table id="upshrinkHeader2"', empty($options['collapse_header']) ? '' : ' style="display: none;"', ' width="100%" cellpadding="4" cellspacing="0" border="0">
<tr>';

// Show a random news item? (or you could pick one from news_lines...)
if (!empty($settings['enable_news']))
echo '
<td width="90%" class="titlebg2">
<span class="smalltext"><b>', $txt[102], '</b>: ', $context['random_news_line'], '</span>
</td>';
echo '
<td class="titlebg2" align="right" nowrap="nowrap" valign="top">
<form action="', $scripturl, '?action=search2" method="post" accept-charset="', $context['character_set'], '" style="margin: 0;">
<a href="', $scripturl, '?action=search;advanced"><img src="'.$settings['images_url'].'/filter.gif" align="middle" style="margin: 0 1ex;" alt="" /></a>
<input type="text" name="search" value="" style="width: 190px;" />&nbsp;
<input type="submit" name="submit" value="', $txt[182], '" style="width: 11ex;" />
<input type="hidden" name="advanced" value="0" />';

// Search within current topic?
if (!empty($context['current_topic']))
echo '
<input type="hidden" name="topic" value="', $context['current_topic'], '" />';

// If we're on a certain board, limit it to this board ;).
elseif (!empty($context['current_board']))
echo '
<input type="hidden" name="brd[', $context['current_board'], ']" value="', $context['current_board'], '" />';

echo '
</form>
</td>
</tr>
</table>
</div>';


// Show the menu here, according to the menu sub template.
template_menu();


// The main content should go here.
echo '
<div id="bodyarea" style="padding: 1ex 0px 2ex 0px;">';
}


That ain't pretty code. 

SleePy

How aint it pretty?
Proper idents where used so you know whether its part of another if or something. It is well commented so you know what section does what.
It is also split up so you can only edit what you need to.
Jeremy D ~ Site Team / SMF Developer ~ GitHub Profile ~ Join us on IRC @ Libera.chat/#smf ~ Support the SMF Support team!

Daniel15

QuoteHow aint it pretty?
For us PHP developers, it's nice :)
But a template designer will look at that and go "What's all this mean??" :P
Daniel15, former Customisation team member, resigned due to lack of time. I still love everyone here :D.
Go to smfshop.com for SMFshop support, do NOT email or PM me!

Grudge

The template system will not change in 2.0. Also I'd be interested in the evidence to back up the comment that it's quicker to assign HTML to a variable and then echo it out than to echo it out directly as everything I've read about these suggest that for both memory consumption and speed it's better to echo out directly (albeit via the output buffer).

The only thing changing HTML wise with SMF 2.0 will be a move towards semantic code that should mean theme authors will be able to change a large amount of the template using just the CSS. As I've said a million times I'd like to change the template system and have some well developed plans for it - but it's low priority for SMF at the moment - particularly as theme authors seem to be perfectly capable of creating some fantastic themes with the current system.

As for the code. The SMF code is extremely clear, consistant and well commented. Obviously everyone has their own preferences in terms of style I accept. I would accept that people not familiar with PHP may find it a bit daunting at first.
I'm only a half geek really...

Ben_S

Quote from: Daniel15 on February 05, 2008, 10:18:10 PM
QuoteHow aint it pretty?
For us PHP developers, it's nice :)
But a template designer will look at that and go "What's all this mean??" :P

Exactly the same as what happens with Smarty etc.
Liverpool FC Forum with 14 million+ posts.

plexxity

if there are any new features at all, i hope there is a Subscriptions feature! SMF is the only forum i know of that doesn't have a Subscriptions manager... for what i would do... its would be definitely worth it!

note: i know there is a mod for smf already, but its buggy, and doesnt work well for me.

shadow82x

Quote from: plexxity on February 07, 2008, 05:34:42 PM
if there are any new features at all, i hope there is a Subscriptions feature! SMF is the only forum i know of that doesn't have a Subscriptions manager... for what i would do... its would be definitely worth it!

note: i know there is a mod for smf already, but its buggy, and doesnt work well for me.
You mean paid subscriptions? Its a feature already in SMF2.0 beta2. :)

http://www.simplemachines.org/community/index.php?topic=217789.0
Quote
  • Added paid subscription feature - only currently supporting PayPal
Colin B
Former Spammer, Customize, & Support Team Member

Gary

Quote from: plexxity on February 07, 2008, 05:34:42 PM
if there are any new features at all, i hope there is a Subscriptions feature! SMF is the only forum i know of that doesn't have a Subscriptions manager... for what i would do... its would be definitely worth it!

Like shadow said. It does now. :P
Gary M. Gadsdon
Do NOT PM me unless I say so
War of the Simpsons
Bongo Comics Fan Forum
Youtube Let's Plays

^ YT is changing monetisation policy, help reach 1000 sub threshold.

plexxity

omg.... release smf2 soon.... its been forever :(

Gary

If you become a charter member, you can get access to the download.

That or you just wait until it's released. We don't set deadlines, and each time it's asked God kills a kitty. WONT SOMEONE PLEASE THINK OF THE KITTIES! :P
Gary M. Gadsdon
Do NOT PM me unless I say so
War of the Simpsons
Bongo Comics Fan Forum
Youtube Let's Plays

^ YT is changing monetisation policy, help reach 1000 sub threshold.

Ben_S

Quote from: plexxity on February 07, 2008, 05:34:42 PM
if there are any new features at all, i hope there is a Subscriptions feature! SMF is the only forum i know of that doesn't have a Subscriptions manager... for what i would do... its would be definitely worth it!

I can't think of any other free forum software that has it ???
Liverpool FC Forum with 14 million+ posts.

plexxity

Not any other free ones, but all pay ones... and bassicaly SMF2 isnt free, you have to be a charter member, untill its out of beta... then you have to pay for all the good Mods for it.. like ShopMod etc...

it ends up costing the same for me.

Grudge

You have to be a Charter Member until it's out of closed beta. We have a closed beta because it's easier to manage 200 beta testers then 20,000. Trust me, if beta 2 had gone to the public we'd be facing serious criticism for the quality of our betas. If we didn't have the Charter program betas would not come out any quicker - we'd just have more dedicated beta testers.

Obviously we're not responsible for "paid for" mods - we don't release any paid for items at all.
I'm only a half geek really...

Fustrate

and the Shop mod doesn't cost anything, last time I checked... I've only encountered one or two mods that require you to pay to use them. Most mod authors follow the same path as SM, which is to put out the best quality free software available.
Steven Hoffman
Former Team Member, 2009-2012

shadow82x

Theres an advanced shop mod and a free one as there is for for other mods.
Colin B
Former Spammer, Customize, & Support Team Member

Fustrate

Ah, I've never noticed any features missing from the free one, so I guess I didn't look around for a bigger one ;) the Gallery is like that too, right? Though there are some features in the paid one that I wish were in the free one...
Steven Hoffman
Former Team Member, 2009-2012

Daniel15

That's the Store mod by vbgamer45, not the Shop mod by me. None of my public mods are paid, nor will they ever be (that's a promise, you can quote me on that). ;)
Daniel15, former Customisation team member, resigned due to lack of time. I still love everyone here :D.
Go to smfshop.com for SMFshop support, do NOT email or PM me!

Fustrate

Ah yes, that's what I was thinking of. I have yours on my 1.1.4 forum, and I'm liking it how it is :) any plans to update it for 2.0 after beta3 or any of the release candidates?
Steven Hoffman
Former Team Member, 2009-2012

Nordoelum

When will we see 2.0 Update Part 5?

Birger :)

Advertisement: